//获取内存大小
CString mem;
MEMORYSTATUS memoryStatus;
memset(&memoryStatus, 0, sizeof(MEMORYSTATUS));
memoryStatus.dwLength = sizeof(MEMORYSTATUS);
GlobalMemoryStatus(&memoryStatus);
mem.Format("%d Mb", memoryStatus.dwTotalPhys/(1024*1024));
printf("System memory is: %s\n", mem);
以上代码段用于获取系统内存的大小。但是实际使用的时候发现获得的内存大小和实际内存大小不一致,实际内存为8G,但是只获取了4G,相差了一倍。经过分析,发现原来是GlobalMemoryStatus()函数识别不了大于2G的内存,应该使用GlobalMemoryStatusEx()。正确代码如下:
//获取内存大小
CString mem;
MEMORYSTATUSEX memoryStatus;
memset(&memoryStatus, 0, sizeof(MEMORYSTATUSEX));
memoryStatus.dwLength = sizeof(MEMORYSTATUSEX);
GlobalMemoryStatusEX(&memoryStatus);
mem.Format("%d Mb", memoryStatus.ullTotalPhys/(1024*1024));
printf("System memory is: %s\n", mem);