繁体   English   中英

如何在C ++中随时查找我的应用程序使用了多少内存

[英]How can I find how much memory my application is used any any time in c++

我有一个程序可以在多个文件上运行特定任务,因此有效地具有如下结构:

std::vector<string> fileList=getFileList();
for(int i=0;i<fileList.size();i++)
{
       processFile(fileList[i]);
}

我担心processFile函数中有少量内存泄漏(这是一个相对复杂的函数,它调用其他几个函数并使用几个类)。

要检查此函数是否确实存在内存泄漏,例如要测量应用程序在调用processFile之前和之后使用的内存量,并在非常大的数据集上运行它,并查看在处理过程中内存使用情况如何变化。

有什么方法可以衡量我的应用程序在该应用程序内部使用的内存量?

以同样的方式,我可以找到运行期间应用程序各部分正在使用的内存量吗?

如果要在运行时通过上述代码测量正在使用多少内存,则必须计算以下内容:

(fileList中元素的数量)* sizeof(string)+ fileList中文件的大小

但是,如果您想在运行时在Windows中获取所有进程内存的使用情况,则可以在程序中调用GetProcessMemoryInfo API并将其进程句柄( GetCurrentProcess() API)传递给它,该API的示例用法:

https://msdn.microsoft.com/zh-CN/library/ms682050.aspx

通过此链接查看对您问题的完整答复:

如何从进程内部确定CPU和内存消耗?

检测内存泄漏和监视内存使用情况的常见解决方案是使用valgrind运行程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM