Поделиться через


Предупреждение C6386

Переполнение буфера: доступ к имени буфера, размер записываемого файла — "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';
}

См. также

C6201