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

您可能会发现有用的 Dr.Memory。它适用于 Windows 和 Linux。您可以 在此处下载

使用它更容易一些。

于 2013-06-12T07:30:30.153 回答
0

不,gdb 对跟踪内存泄漏没有太大帮助。考虑使用valgrind,这将帮助您发现内存泄漏和其他与内存相关的问题(例如,越界访问)。

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