# 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' и т.п.