有没有一种简单的方法可以找出我的程序在不同的操作(大型矩阵操作)后使用了多少RAM(以MB为单位)?我用的是Windows10。
C++标准(例如读n3337)没有提到RAM,所以您的问题是特定于操作系统的。而且,在大多数操作系统上,一个进程运行在虚拟内存中,两个不同的进程可能共享一些公共(虚拟或物理)内存。读一本关于操作系统的好教材。
在执行期间,可能会将某些页交换到磁盘上的交换区域。
因此,RAM使用的概念是近似的,并随时间而变化。阅读有关跳动,页面错误和MMU的内容。
但是在Linux上,您可以使用/proc/
文件系统。读取过程(5)。您的程序将访问/proc/self/maps
对于Windows,请阅读WinAPI文档。您可能想要虚拟内存功能和内存管理功能。
您可以重新定义::operatornew
和/或使用像POCO这样的库。有了GPGPU和OpenCL,事情变得更加复杂。有些编译器有OpenACC扩展来实现这些功能。