0

有很多详细的说明可以测量 C++ 内存使用情况。(底部的示例链接)

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

为了解决那个(大型)项目中的内存错误,我编写了一个程序来准确测量内存使用情况,使用Lanzelot 的有用答案。即,标题为“总物理内存(RAM)”的部分。但是,如果我调用 1 double 的大小,我会得到 577536。即使那是位报价,也很多..

我尝试编写一个沼泽标准程序来暂停,分配一些内存(假设 calloc 一个兆字节的数据)并在释放所述内存之前再次暂停。停顿足够长,让我舒服地看着 WTM。除了每个内存分配的可执行文件仅增长 4 K(!)。

我在这里想念什么?QtCreator 或编译器是否优化了分配的内存?为什么大型复杂项目似乎允许将内存使用分辨率降低到 ~ 1MB,而无论我在我的简单程序中徒劳地摆弄任何内存大小,都完全移动了 Windows 任务管理器中显示的内存?

C++:从程序、Windows 和 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 以北..

4

0 回答 0