【发布时间】:2015-03-20 10:03:11
【问题描述】:
我遇到了一个奇怪的内存问题。随着时间的推移,我的 C++ 应用程序执行过程会消耗虚拟内存和物理内存。
当我关闭进程时,它消耗的任何虚拟内存都会返回给系统。但是,大部分消耗的物理内存永远不会返回给系统。我可以在任务管理器中查看。
我的应用程序动态分配的任何内存都应在其进程终止时返回给系统。
我的应用程序正在执行的唯一可疑计算是重复调用 FindFirstFile/FindNextFile 来检查文件系统中的一些现有文件。该操作总共检查了大约 1000 万个文件。在这种情况下,我相信我正确地关闭了 FindFirstFile 返回的文件句柄。
谁能推测为什么物理内存没有返回到系统?
【问题讨论】:
-
你能把你的代码贴在你认为可能有内存泄漏的地方吗?你也可以使用 valgrind 来分析你的代码。
-
您肯定存在内存泄漏。在没有看到任何代码的情况下,除了说您应该释放您分配的任何内存之外,我们无法为您提供帮助......
-
@frymode:从问题标题来看,你会这么认为,但如果你真的阅读了整个问题,就会有很大的不同。
-
“物理内存的使用导致我的应用程序出现性能问题。”很可疑。你能用一些数字来证实这一点吗? (我的系统有 x GB 的物理 RAM,我正在使用 Y 工具查看“提交的页面”,当这个数字超过 Z 时,我的应用程序开始花费 r 毫秒来执行操作 q 而不是 t 毫秒)
标签: c++ windows memory-leaks win32-process