【发布时间】:2017-07-14 17:49:22
【问题描述】:
我目前正在使用特定的 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;
【问题讨论】:
-
您是否考虑过改用
std::vector? -
如果你有 2 个
news,你应该有 2 个deletes。您的示例有rows + 2删除。基本上,计算你拥有的新闻和删除的数量,它们最终应该是相等的。 -
这里删除的顺序有影响吗?
-
不,没有任何区别。
标签: c++ pointers memory-management