如何查找VC ++ / MFC-App的内存消耗

问题描述 投票:0回答:1

我正在以下环境中开发应用程序:Windows,本机,32位,使用Visual Studio C ++和MFC构建,多个Com-Dll,ActiveX-Controls,库。当我的应用程序运行时,我在Windows任务管理器中看到它缓慢但不断地消耗内存(每10 kb左右,或者每10个应用程序“工作周期”约1千内存),我需要弄清楚这种消耗发生的位置。 >

背景信息:

  • 该应用有2种状态:闲置和工作状态。内存消耗仅在持续处理数据的工作状态下发生
  • 在工作状态下,没有用户输入或对应用程序的任何其他外部请求
  • 我很确定动态分配的内存(新的,malloc)没有问题,因为我已经使用MemPro(https://puredevsoftware.com/mempro)之类的工具进行了检查,并且当我结束调试程序时,调试器中没有报告内存泄漏程序
  • 所以我认为是有些类成员(列表,映射,数组等)正在增长(但不应该这样),或者内存消耗发生在外部组件中
  • 所以我的问题是:

  • 您知道任何可以跟踪内存使用情况的工具
  • 我使用Windows-Taskmanager和Sysinternals-Process-Explorer,但是都以千字节为单位显示我的内存。有没有一种以字节为单位查看它的方式/工具,所以我可以更快地看到更改?
  • 如何在代码中获取我的应用程序的当前内存使用情况(我猜是一些Windows-Api调用,以便我可以通过Debug-Outputs来解决问题)>
  • 还有其他提示吗?
  • 我正在以下环境中开发应用程序:Windows,本机,32位,使用Visual Studio C ++和MFC构建,多个Com-Dll,ActiveX-Controls,库。当我的应用程序运行时,我在Windows -...

] << [
您可以随时用_CrtMemCheckpoint()制作内存快照,然后可以用_CrtMemDifference()比较两个快照。有关详细信息,请参见https://docs.microsoft.com/en-us/visualstudio/debugger/finding-memory-leaks-using-the-crt-library?view=vs-2019
debugging visual-c++ memory-leaks mfc out-of-memory
1个回答
0
投票
您可以随时用_CrtMemCheckpoint()制作内存快照,然后可以用_CrtMemDifference()比较两个快照。有关详细信息,请参见https://docs.microsoft.com/en-us/visualstudio/debugger/finding-memory-leaks-using-the-crt-library?view=vs-2019
© www.soinside.com 2019 - 2024. All rights reserved.