调试一个巨大的内存泄漏,冻结计算机(C ++)

时间:2015-02-24 18:08:21

标签: c++ debugging memory-leaks

我的应用程序有一个巨大的内存泄漏,它会立即占用我的所有内存,而且我无法调试,因为它会冻结计算机... 你们有这种问题的技术解决方案吗? 编辑:我正在使用Qt Creator与Windows 7和MSVC编译器。 干杯

2 个答案:

答案 0 :(得分:2)

您不能只使用一条指令冻结计算机。如果你分配了大量内存,它将使程序崩溃或使用虚拟内存空间而不会实际消耗真实空间。

因此,如果您进一步调试它,可能采用较小的步骤,我相信您会找到解决方案。

您可以尝试使用许多调试工具,具体取决于您的工作环境。假设您在linux下工作,最简单的是命令行gdb,允许您逐行执行代码。更高级,专门针对记忆问题量身定制的是valgrind


在评论中,您询问操作系统是否有办法将可用内存限制为程序/进程。您可以尝试阅读这个问题:

https://unix.stackexchange.com/questions/44985/limit-memory-usage-for-a-single-linux-process

但是,鉴于您提供的信息很少,我不相信它会解决您的问题。

答案 1 :(得分:1)

如果你有全局变量立即分配内存,即在到达main()中的第一行代码之前(例如可以在类构造函数中找到),那么你可以考虑将断点放在第一行main()的行,而是类构造函数。正如基于之前类似经历的提示......