動的割り当てとポインタが初めてです。私は、ファイルから2Dダイナミック配列を記入し、それに迷路解決アルゴリズム(ウォールフォロワ)を適用しようとします。削除はいつ使用しますか? (動的に作成された2次元配列の後に削除しない場合の結果)
私はこのような動的に割り当てられた2次元配列を作成すると仮定:
int** board;
board = new int* [rowsize];
for(int row = 0; row < rowsize; row++)
{
board[row] = new int[colsize];
}
私は別の変数のためにこのポインタを使用しないことがわかっている場合は、私はboard
で削除使用しないで逃げることができますか?潜在的に間違っている可能性がない場合(もしあなたがウォールフォロワアルゴリズムに精通しているなら)?また、ポインタへのポインタを削除するには、delete board
で十分でしょうか?
これは私が得意ではないものです。私は1つの目的のためだけにプログラムを使用すると仮定します。意味:ファイルからデータを読み、迷路を通り、パスを印刷して終了します。それでもメモリリークはどうですか?私はあなたが別の場所を指すためにポインタを使用すると、メモリリークを参照して、今すぐ前の場所にアクセスできないと思った。このような簡単なプログラムでは、「漏れた」メモリを視覚化するのに苦労しています。 –
@LucAux 'new'と' delete'への呼び出しが私たちのバランスのときにメモリリークが発生します。あなたのプログラムが終了すると、OSはあなたのプログラムの後でメモリリーク、クローズされていないファイル記述子などを含む "混乱"を取り除きます。しかし、メモリプロファイラでコードを実行したい場合や、ループ内でコードを実行するために他の人がコードをコピーする場合は、自分でそれらを削除することをお勧めします。 – dasblinkenlight