[英]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的示例用法:
通过此链接查看对您问题的完整答复:
检测内存泄漏和监视内存使用情况的常见解决方案是使用valgrind运行程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.