c++ - c++ 删除内存

标签 c++ arrays memory

我正在尝试使用动态内存分配重写我的代码,我正在使用,除此之外,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/

相关文章:

r - 为什么 as.integer 在 R 中返回 NA?

Delphi 7.0和内存泄漏?

c++ - 在头文件中设置常量 char*?

c++ - 限制(amp)函数类型

c++ - 在 OS X 中从 main 返回时中止陷阱 6 但在 linux 中不

java - 具有 3x3 显示的二维数组

c++ - 如何创建多态对象

c - 如何在c中读取文件中的单词后存储值

javascript - 在 Javascript 中反转对象数组

python - Python中的二维列表重复随机数赋值