我做错了什么?我使用new分配,但是当我尝试删除[]时,它会给我一个错误。
mycode的:
int** ma;
int n;
int m;
m = nr_col_lin;
n = nr_col_lin;
ma = new int*[m];
for(i = 0; i < m; i++)
ma[i] = new int[n];
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
ma[i][j] = 0;
}
}
和交易:
for(int i = 0; i < m; ++i)
delete[] ma[i];
delete [] ma;
编辑:
我发现了问题......它不在代码中......我正在删除我没有分配的内容。
答案 0 :(得分:3)
您的代码中绝对没有错误。这十分完美。探测器必须在其他地方,假设nr_col_lin
初始化为一些有效值,即确保它不是0
或负数。如果是size_t
或某些无符号整数值,请确保m
和n
大于0。