debugging - 如何查找 VC++/MFC-App 的内存消耗
问题描述
我正在这个环境中开发一个应用程序:Windows,Native,32 位,用 Visual Studio C++ 和 MFC 构建,几个 Com-Dlls,ActiveX-Controls,libs。当我的应用程序运行时,我在 Windows-Taskmanager 中看到它缓慢但不断地消耗内存(大约每分钟 10Kb 或每 10 个“工作周期”我的应用程序大约 1K),我需要弄清楚这种消耗发生在哪里。
背景资料:
- 该应用程序有两种状态:空闲和工作。内存消耗仅发生在不断处理数据的工作状态下
- 在工作状态下,应用程序没有用户输入或任何其他外部请求
- 我很确定动态分配的内存(新的,malloc)没有问题,因为我已经使用 MemPro(https://puredevsoftware.com/mempro)等工具检查了它,并且调试器中没有报告内存泄漏当我结束程序时
- 所以我认为要么有一些类成员(列表、映射、数组......)正在增长(但不应该),要么内存消耗发生在外部组件中
所以我的问题是:
- 你知道任何可以跟踪内存使用情况的工具吗
- 我使用 Windows-Taskmanager 和 Sysinternals-Process-Explorer,但两者都以 KBytes 显示我的内存。有没有办法/工具以字节为单位查看它,以便我可以更快地看到变化?
- 如何在代码中获取我的应用程序的当前内存使用情况(我猜是一些 windows-Api-call),以便我可以通过 Debug-Outputs 解决问题
- 任何其他提示?
解决方案
您可以随时对您的内存进行快照_CrtMemCheckpoint()
,然后您可以将两个快照与_CrtMemDifference()
. 有关详细信息,请参阅https://docs.microsoft.com/en-us/visualstudio/debugger/finding-memory-leaks-using-the-crt-library?view=vs-2019。
推荐阅读
- r - paste 如何在函数中工作
- java - 无法在 Oracle 中使用 dbms_java.loadjava 加载 jar
- r - 从列表列表中读入文件
- swift - 在 SwiftUI 中显示小吃店消息
- javascript - 渲染在使用状态时无法在反应 js 中工作
- python - 在 python 中开发时,如何在 post 请求中使用“format=json&data=”?
- firebase - 如何将 firebase 托管和 firebase 功能连接到不同的域
- mysql - 无法使用 jdbc 和 spark 连接器从 databricks 集群连接到 Azure 数据库 for MySQL 服务器
- google-sheets - 使用 Google 表格组合/改进公式
- vscode-settings - VScode settings.json 显示错误“预期文件结尾”