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.