如何正确统计C程序运行的内存占用量?

来源:百度知道 编辑:UC知道 时间:2024/09/28 07:07:00
任务管理器里有内存和虚拟内存,我发现程序的虚拟内存占用量太大了,不太合理。另外我发现在不同的机器上跑相同的程序,任务管理器显示的内存和虚拟内存都不太一样,所以我想请问下:如何正确统计C程序运行的内存占用量?谢谢!
看不太明白,能不能给出个例子呢?谢谢

如果大于电脑实际内存,会慢得不得了,或者内存直接申请失败。
在内存碎片化严重的情况下,申请连续很大的一大块内存,可能产生失败。
当数据量接近内存大小时,一般要求更改算法,将大数据切割成一块块的小数据,逐块加载至内存运算,最后合并计算结果。
64位操作系统可处理的内存比32位大得多,所以天量数据一般使用64位以上的系统来处理,比32位系统有效率。
对于2G的32位XP,如果只运行你的程序,保留500M左右给操作系统,你的程序申请1.4G左右的连续内存是可能成功的,但不一定。

#define _WIN32_WINNT 0x0500
#include <windows.h>
#define DIV 1024
char *divisor = "K";
#define WIDTH 7
void main(int argc, char *argv[])
{
MEMORYSTATUSEX statex;
statex.dwLength = sizeof (statex);
GlobalMemoryStatusEx (&statex);
printf ("%ld percent of memory is in use.\n", statex.dwMemoryLoad);
printf ("There are %*I64d total %sbytes of physical memory.\n", WIDTH, statex.ullTotalPhys/DIV, divisor);
printf ("There are %*I64d free %sbytes of physical memory.\n", WIDTH, statex.ullAvailPhys/DIV, divisor);
printf ("There are %*I64d total %sbytes of paging file.\n", WIDTH, statex