>
>
>
V798. The size of the dynamic array can…


V798. The size of the dynamic array can be less than the number of elements in the initializer.

Анализатор обнаружил потенциально возможную ошибку, связанную с тем, что размер динамического массива может оказаться меньше количества элементов в его инициализаторе. В этом случае при создании массива, в зависимости от того, какая версия оператора 'new' используется, будет либо выброшено исключение 'std::bad_array_new_length', либо возвращен нулевой указатель.

Рассмотрим пример:

int n = 2;
...
int* arr = new int[n] { 1, 2, 3 };

Значение переменной 'n' меньше количества элементов в инициализаторе. Корректный код должен иметь вид:

int n = 3;
...
int* arr = new int[n] { 1, 2, 3 };

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