我正在尝试使用动态内存分配重写我的代码,我正在使用,除此之外,this question (和答案)来帮助我。所以按照 Johanes Shaub 的建议,我将我的二维数组声明为:
double (*q_1_matrix)[TIME] = new double[SPACE][TIME];
现在当我运行我的代码时,一切似乎都运行良好。但是当我添加以下行再次释放内存时:
for(i = 0; i < SPACE; ++i) {
delete [] q_1_matrix[i];
}
delete [] q_1_matrix;
然后我收到警告: 删除数组‘*(q_1_matrix + ((sizetype)(((long unsigned int)i) * 800ul)))’ [默认启用] delete [] q_1_matrix[i]; 随后我遇到了段错误(核心已转储)。
有人知道我做错了什么吗?
最佳答案
new
调用实际上创建了一大块内存。它仅作为二维数组进行索引。
您只需调用 delete[] q_1_matrix;
(无需 for 循环)。
关于c++ - c++ 删除内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33985505/