我正在从以下 C++ 脚本中获取内存堆消息。如果我删除数组释放,错误就会消失。所以这个错误可能在代码的释放部分。我想不通
if(harmonic_type =='a')
{
double ** harmonic_content = new double *[number_of_harmonics_required_to_monitor]();
for (int i=0;i<number_of_harmonics_required_to_monitor+1;i++)
{
harmonic_content[i] = new double [2]();
}
harmonic_content = harmonic_detector(waveformdata,number_of_samples,samplingrate_Hz, fundamental_frequency_Hz, number_of_harmonics_required_to_monitor,harmonic_type);
for (int i=1;i<number_of_harmonics_required_to_monitor+1;i++)
{
cout<<" Harmonic order "<< i << "::::" << harmonic_content[i][0] << " Hz ::::"<<harmonic_content[i][1] << " :::: "<<harmonic_content[i][2]<<endl;
}
for (int i=0;i<number_of_harmonics_required_to_monitor+1;i++)
{
delete [] harmonic_content [i];
}
delete [] harmonic_content;
}
最佳答案
在
new double *[number_of_harmonics_required_to_monitor]()
创建的元素总数:number_of_harmonics_required_to_monitor
在
for (int i=0;i<number_of_harmonics_required_to_monitor+1;i++)
写入的元素总数:number_of_harmonics_required_to_monitor+1
(从 0 到 number_of_harmonics_required_to_monitor
)
在
for (int i=1;i<number_of_harmonics_required_to_monitor+1;i++)
最后读取的元素不存在:它具有索引 number_of_harmonics_required_to_monitor+1
关于c++ - 内存堆问题C++,动态分配多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25993375/