Инструмент статического анализа, который мы используем, помечает код C, как показано ниже, как критическое переполнение буфера.
#define size 64
char buf [size + 1] = "";
memset (buf, 0, size + 1);
Сообщение об ошибке инструмента: Переполнение буфера (индекс массива выходит за границы): размер массива 'buf' равен 1. Массив 'buf' может использовать индекс 0..64.
Это законно? Действительно ли присваивание массива символов пустой строке приводит к уменьшению ее длины до одного байта, как если бы она была определена как char buf [] = "";
?
size
. - person bk1e   schedule 16.02.2009