3

次の例に出くわしたとき、いくつかの簡単なポインター演習を解決していました。

void deallocate2D(int** array, int nrows) {     
 /*  deallocate each row  */
 int i;
 for(i = 0; i < nrows; i++) {
      free(array[i]);
 }

 /*  deallocate array of pointers  */
 free(array);     
}

配列は、main で int** array1 として定義されます。

これは 2 次元配列のメモリの割り当てを解除する正しい方法ですか、それとも代わりに int*** 配列を関数に渡す必要がありますか? メモリの割り当てが正常に解除されたことを確認する方法はありますか?

4

1 に答える 1

3

それは正解です。int***ポインタの値を変更する場合にのみ必要ですが、変更する必要はありません。

メモリの割り当て/解放をチェックできるツールは存在します-Valgrindはそれを実行できるはずです。

于 2012-04-26T20:27:00.603 に答える