# V819. Decreased performance. Memory is allocated and released multiple times inside the loop body.

The analyzer has detected a construct that could be optimized. A memory block of the same size is allocated and released multiple times inside a loop body. To increase the program's performance, take the code performing memory allocation and release out of the loop into a separate code block.

Consider the following example:

    for (int i = 0; i < N; i++)
    {
      int *arr = new int[1024 * 1024];
      SetValues(arr);
      val[i] = GetP(arr);
      delete [] arr;
    }

Memory allocation and release can be taken out of the loop and implemented as a separate code block.

Improved code:

    int *arr = new int[1024 * 1024];
    for (int i = 0; i < N; i++)
    {
      SetValues(arr);
      val[i] = GetP(arr);
    }
    delete [] arr;

Similarly, the analyzer may suggest optimizing code where memory is allocated using function 'malloc' and the like.