我有一个程序可以在多个文件上运行特定任务,因此它有效地具有以下结构:
std::vector<string> fileList=getFileList();
for(int i=0;i<fileList.size();i++)
{
processFile(fileList[i]);
}
我担心processFile函数中存在少量内存泄漏(这是一个相对复杂的函数,它调用其他几个函数并使用多个类)。
检查此函数中是否确实存在内存泄漏,比如测量应用程序在调用processFile之前和之后使用的内存量,并在非常大的数据集上运行,并查看内存使用情况如何变化在处理过程中
有什么方法可以衡量我的应用程序在该应用程序中使用的内存量?
以同样的方式,我可以找到应用程序的每个部分在运行时使用的内存量吗?
答案 0 :(得分:0)
如果你想在运行时通过上面的代码测量多少内存,你必须计算:
(fileList中的元素数量)* sizeof(字符串)+ fileList中文件的大小
但如果您想在运行时在Windows中获取所有进程内存使用情况,可以在程序中调用 GetProcessMemoryInfo API并传递进程句柄( GetCurrentProcess() API ),使用此API的示例:
通过以下链接查看对您问题的完整回复:
How to determine CPU and memory consumption from inside a process?