Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V687. Size of array calculated by sizeof() operator was added to a pointer. It is possible that the number of elements should be calculated by sizeof(A)/sizeof(A[0]).

04 Мар 2014

Анализатор обнаружил, что к указателю, прибавляется размер массива. Это подозрительно. Возможно следовало прибавлять значение, равное количеству элементов в массиве, а не его размеру.

Примечание. Безопасным считается работа с массивами, состоящими из байт (char/unsigned char).

Пример ошибки:

int A[10];
...
std::sort(A, A + sizeof(A));

Первый аргумент функции - итератор, указывающий на первый элемент сортируемой последовательности.

Второй аргумент функции - итератор, указывающий на элемент, стоящий после последнего сортируемого элемента.

Вызов функции написан с ошибкой. К указателю прибавляется размер массива, в результате чего, функция попытается отсортировать больше данных, чем следует.

Чтобы исправить ошибку, следует прибавлять количество элементов в массиве:

int A[10];
...
std::sort(A, A + sizeof(A) / sizeof(A[0]));

Данная диагностика классифицируется как: