Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Переполнение буфера: доступ к имени буфера, размер записываемого файла — "size1", но "size2" байты могут быть записаны: строки: x, y
Замечания
Это предупреждение указывает, что объем записываемого буфера может быть меньше, чем индекс, используемый для записи в него. Этот дефект может привести к переполнению буфера.
Имя анализа кода: WRITE_OVERRUN
Пример
Следующий код создает как это предупреждение, так и C6201:
#define MAX 25
void f()
{
char a[MAX];
a[MAX] = '\0'; // this writes one element past the end of the buffer
}
Чтобы исправить предупреждение, используйте следующий код, который учитывает тот факт, что индексы массива основаны на нулях. Таким образом MAX - 1 , последний элемент в буфере:
#define MAX 25
void f ( )
{
char a[MAX];
a[MAX-1] = '\0';
}