0
私は現在、生のポインタを使用する必要があるような特定のAPIを使用していますが、ポインタの特定の配置を考えれば、メモリをクリアしてそうする際の未定義の動作。この2次元配列のメモリを解放する
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'](http://en.cppreference.com/w/cpp/container/vector)を使用して考えがあります代わりに? –
2つの 'new'がある場合は、2つの' delete'が必要です。あなたの例は '行+ 2 'の削除を持っています。基本的に、あなたが持っているニュースや削除の数を数えれば、それらは等しくなるはずです。 –
ここで削除の順序が違いますか? – Alexander