如何检查内存泄漏

时间:2013-06-12 05:17:48

标签: c memory-leaks

我编写了一个使用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来自哪里。它被覆盖了吗?我怎么找到它?

3 个答案:

答案 0 :(得分:2)

您正在使用gdb,所以我假设您在Linux计算机上运行。您可以轻松使用valgrind来跟踪内存泄漏。

valgrind --leak-check=full --show-reachable=yes <your-app>

答案 1 :(得分:0)

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

valgrind --leak-check=full --show-reachable=yes ./your_app

答案 2 :(得分:0)

您可能会找到有用的Dr.Memory。它适用于Windows和Linux。您可以下载它here

使用起来要容易一些。