1

maxmin アルゴリズムを使用してゲームをプレイする AI を作成しました。基本的に、この時点で 1 レベル深くなります。メモリリークがあると思いますが、追跡する方法がわかりません。gdb を使用しましたが、役に立ちませんでした。

これが起こっていることです:

for (i = 0; i < max_legal; i++) {
    AddToBoard(legal_columns[i], legal_pieces[i]);
    val = Min(depth - 1, legal_columns[i]);
    RemoveFromBoard(legal_columns[i]);
    ......

}
  • legal_column配列は{1,1,2,2...12,12}
  • legal_pieces配列は{1,3,1,3....1,3}

の場合i = 5、正当な駒は を持ってい{1, 3, 1, 3, 1, 3, 97, 0 <repeats 11 times>}ます。

97 と 0 がどこから来ているのかわかりません。上書きされていますか?どうすれば見つけられますか?

4

3 に答える 3

2

gdb を使用しているため、Linux マシンで実行していると仮定します。valgrindを使用すると、メモリ リークを簡単に追跡できます。

valgrind --leak-check=full --show-reachable=yes <your-app>
于 2013-06-12T05:21:21.980 に答える
0

いいえ、gdb はメモリ リークの追跡にはあまり役に立ちません。valgrindの使用を検討してください。これは、メモリ リークやその他のメモリ関連の問題 (境界外アクセスなど) を見つけるのに役立ちます。

valgrind --leak-check=full --show-reachable=yes ./your_app
于 2013-06-12T05:19:26.590 に答える