V819. Decreased performance. Memory is allocated and released multiple times inside the loop body.
Анализатор обнаружил конструкцию, которую можно оптимизировать. Блок памяти одного и того же размера выделяется и освобождается в теле цикла множество раз. В этом случае можно вынести выделение и освобождение памяти из цикла, что повысит производительность программы.
Рассмотрим пример неэффективного кода:
for (int i = 0; i < N; i++)
{
int *arr = new int[1024 * 1024];
SetValues(arr);
val[i] = GetP(arr);
delete [] arr;
}
Здесь можно вынести выделение и освобождение памяти из тела цикла.
Улучшенный вариант кода:
int *arr = new int[1024 * 1024];
for (int i = 0; i < N; i++)
{
SetValues(arr);
val[i] = GetP(arr);
}
delete [] arr;
Аналогично анализатор может предложить оптимизировать код при выделении памяти с помощью функции 'malloc' и т.п.