【问题标题】:How is MFC app commiting to virtual memory?MFC 应用程序如何提交虚拟内存?
【发布时间】:2011-03-19 16:46:20
【问题描述】:

我正在开发一个 MFC 应用程序,它似乎会自动提交 ~160MB 的虚拟内存。该应用程序通常以 10-14MB 的内存使用量运行,因此此级别的已提交内存似乎过多。此外,代码中没有调用 VirtualAlloc 的地方...... COM 和 ATL 也在使用中。

在到达 __tmainCRTStartup 中的断点之前,内存显示为进程启动的实例已提交。

如何保留/提交此内存?

提前致谢!

【问题讨论】:

    标签: visual-c++ mfc atlcom


    【解决方案1】:

    唯一的原因可能是您使用的 DLL。我在很多项目中都使用过 MFC 7.0 和 9.0,可以告诉你他们不会提交这么多内存。

    【讨论】:

    • 在一些遗留代码中发现了问题,该代码具有相当大的全局堆栈数组,除非发生页面错误,否则该数组已提交且从未使用过。
    【解决方案2】:

    原来有一些“遗留”代码使用自定义对象的静态数组分配了大约 1000 个额外元素,因此将其更改为使用 std::vector 完全缓解了这个问题...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-18
      • 1970-01-01
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多