我可以断定我的应用程序不会导致内存泄漏吗?

时间:2017-01-04 06:28:12

标签: c++ memory memory-management memory-leaks

昨天我测试了一个用C ++编写的应用程序。我在Visual Studio中使用Debug模式启动了应用程序,并将其与其他一些应用程序(Firefox,Explorer,MS Word ...)一起运行一夜。今天早上我检查了测试PC并发现:

  1. Visual Studio在内存分配语句中遇到了“内存不足”的异常。
  2. 由于内存不足,Firefox也被杀死了。
  3. 任务管理器显示内存使用量约为6.5 GB(安装了8.0 GB)。我总结了任务管理器中显示的所有应用程序的内存使用情况,但总和远小于6.5 GB。
  4. 我检查了Visual Studio和我的应用程序的内存使用情况,但它们都很轻松。然后我将我的应用程序与Visual Studio(可见任务管理器)一起杀死,但内存使用率没有下降。然后我试图杀死其他一些进程,但内存使用量仍未减少。毕竟,我不得不重新启动系统以取回内存。

    1. 正如在What REALLY happens when you don't free after malloc?中所接受的那样,我认为我的应用程序不是内存泄漏的原因,因为如果是,那么在应用程序之后内存使用会减少(实际上没有减少)杀害。我是对的吗?
    2. 我听说nonpaged pool memory leak通过Windows using too much RAM, how to diagnose resource hog与我的症状相似(即在杀死一些可疑进程但内存使用量没有减少之后)。我的申请能否适应这种情况?怎么可能?

1 个答案:

答案 0 :(得分:0)

最好的方法是使用那些标准的分析工具。我不熟悉visual studio中的工具链。但是,我知道Valgrind的记忆(http://valgrind.org/docs/manual/mc-manual.html),他的灵魂目的是发现潜在的记忆泄漏。

如上所述,如果您严格遵循标准的C ++编码,例如: