快速' Dirty:衡量内存使用情况?

时间:2018-05-31 14:28:38

标签: c++ windows-7 qt5.9

有大量详细的说明来衡量C ++内存的使用情况。 (底部的示例链接)

如果我有一个程序处理和显示像素数据,我可以使用Windows任务管理器来发现内存泄漏,如果连续处理/显示/关闭多个文件意味着可执行程序的内存(私人工作集) )随着每次迭代而增长。是的,不完美但处理1000个数据帧,这可以作为一个快速的解决方案。

为了追踪那个(大型)项目中的内存错误,我编写了一个使用Lanzelot's useful answer准确测量内存使用情况的程序。即,标题为" Total Physical Memory(RAM)"的部分。但是,如果我将calloc的大小设置为1倍,那么我得到的是577536.即使这是一个有点的引用,也是很多......

我尝试编写一个bog标准程序来暂停,分配一些内存(让calloc称为一个兆字节的数据)并在释放所述内存之前再次暂停。暂停足够让我轻松看看WTM。除了可执行文件,每个内存分配仅增加4 K(!)。

我在这里缺少什么? QtCreator或编译器是否优化了分配的内存?为什么大型复杂项目似乎允许将内存使用分辨率降低到大约1MB,而在我的简单程序中无论如何都无法解决内存大小问题,裸机会移动Windows任务管理器中显示的内存?

C++: Measuring memory usage from within the program, Windows and Linux

https://stackoverflow.com/a/64166/2903608

---编辑--- 示例代码,简单如下:

double *pDouble = (double*) calloc(1, sizeof(double));
*pDouble = 5.0;
qDebug() << "*pDouble: " << *pDouble;

如果我查看WTM,则需要4K(无论是1还是1000000双倍)。使用Lanzelot的解决方案,500k以上..

0 个答案:

没有答案