Предполагая, что у меня есть следующие функции:Можно ли указать предложение доступа к буферам в frama-c?
void process_data(uint32_t * data, size_t length) {
for (size_t i = 0; i < length; i++) {
foo(data[i]);
}
}
Как я могу сказать FRAMA-C «эта функция гарантирует каждому доступ к data[i]
удовлетворяет условию i < length
»? Насколько я понимаю, я могу разместить утверждение рядом с каждой строкой кода, которая читает data
, но есть ли лучший способ?
вопрос для вас - это абсолютно гарантировано, что 'data' будет не-NULL и укажет на коллекцию' uint32_t'? Может быть, требуется утверждение, прежде чем идти в цикл 'for'? – t0mm13b
Да, 'data' является' \ valid' и указывает на массив uint32_t. –
Что значит «эта функция обеспечивает ...»? Мне кажется, что вы хотите сказать, что «эта функция требует ...» (в противном случае у вас неверные обращения к памяти), не так ли? – Anne