Klocwork 2020.1 Build 20.1.0.97
// Vertices of simplex
auto v = new double*[n + 1]; // this line give the error
// Average coordinates
auto v_ave = new double[n];
// Reflection coordinates
auto v_ref = new double[n];
// Expansion coordinates
auto v_exp = new double[n];
// Contraction coordinates
auto v_con = new double[n];
if (v == nullptr || v_ave == nullptr || v_ref == nullptr || v_exp == nullptr || v_con == nullptr)
{
status = false;
goto free_mem;
}
// Allocate the columns of the arrays
for (int idx = 0; idx <= n; idx++)
{
v[idx] = new double[n];
if (v[idx] == nullptr)
{
status = false;
goto free_mem;
}
}
.... this is how the memory is free
free_mem:
if (v != nullptr)
{
// Free memory
for (int idx = 0; idx <= n; idx++)
{
delete[] v[idx];
}
delete[] v;
}
delete[] v_ave;
delete[] v_ref;
delete[] v_con;
delete[] v_exp;
return pair<double, bool>(min, status);
I don't understand the issue and I can't find any suggestion for the fix.
To fix the error "memory is allocated through the call to new[]" is to not allocate memory through new[]. Simplest solution is to use
std::vector
instead.