【发布时间】:2015-11-29 17:09:22
【问题描述】:
我正在尝试使用动态内存分配重写我的代码,并且我正在使用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]; 随后我得到一个分段错误(核心转储)。
有人知道我做错了什么吗?
【问题讨论】:
-
使用
std::vector<std::vector<double>> myvec(A, std::vector<double>(B)),这些错误就会消失。