0
我目前正在使用一个特定的API,因此我必须使用原始指针,但是考虑到指针的特定布置,我不确定如何最好地去清除内存并避免任何未定义的行为。取消分配这个特定的二维数组的内存
double *data1 = new double[rows*columns];
double **data2 = new double*[rows];
data2[0] = data1; // Point to first row
for (int i = 1; i < columns; i++) {
data2[i] = data2[i - 1] + rows;
}
我试过类似下面的东西,但我不认为它是正确的。
for(int i = 0; i < rows; i++) {
delete [] data2[i];
}
delete [] data2;
delete [] data1;
你有没有考虑使用['标准:: VECTOR'(http://en.cppreference.com/w/cpp/container/vector)代替? –
如果你有2个'new's,你应该有2个'delete's。你的例子有'rows + 2'删除。基本上,请计算您拥有的新闻和删除数量,最终应该是平等的。 –
删除的顺序在这里有什么不同吗? – Alexander