int main(int argc, char* argv[])
{
SYSTEM_INFO sysInfo;
MEMORYSTATUS memStaus;
GetSystemInfo(&sysInfo);
GlobalMemoryStatus(&memStaus);
GlobalMemoryStatusVlm()
cin.get();
return 0;
}
GlobalMemoryStatus
GlobalMemoryStatus,Win32 API函数。
此函数用来获得当前可用的物理和
虚拟内存信息,函数定义为:
1
2
3
4
|
VOID
GlobalMemoryStatus
(
LPMEMORYSTATUS lpBuffer
);
|
此函数无返回值,参数是一个指向名为MEMORYSTATUS的结构的指针。函数的返回信息会被
存储在MEMORYSTATUS结构中。
此函数用来替代用来支持16位应用程序的GetFreeSpace函数。
2G以上内存建议使用GlobalMemoryStatusEx函数代替(2~4G需要链接器/LARGEADDRESSAWARE选项,4G以上不支持)
应用程序应该在申请内存前调用此函数以防止影响到其他程序运行。
这个函数的返回值是动态的,并且可能返回相同的值。
关于MEMORYSTATUS结构:
结构定义:
1
2
3
4
5
6
7
8
9
10
|
typedef
struct
_MEMORYSTATUS {
// mst
DWORD
dwLength;
// sizeof(MEMORYSTATUS)
DWORD
dwMemoryLoad;
// percent of memory in use
DWORD
dwTotalPhys;
// bytes of physical memory
DWORD
dwAvailPhys;
// free physical memory bytes
DWORD
dwTotalPageFile;
// bytes of paging file
DWORD
dwAvailPageFile;
// free bytes of paging file
DWORD
dwTotalVirtual;
// user bytes of address space
DWORD
dwAvailVirtual;
// free user bytes
} MEMORYSTATUS, *LPMEMORYSTATUS;
|
结构成员的含义:
dwLength
MEMORYSTATUS结构的大小,在调GlobalMemoryStatus函数前用sizeof()函数求得,用来供函数检测结构的版本。
dwMemoryLoad
返回一个介于0~100之间的值,用来指示当前系统内存的使用率。
dwTotalPhys
返回总的物理内存大小,以
字节(byte)为单位。
dwAvailPhys
返回可用的物理内存大小,以
字节(byte)为单位。
dwTotalPageFile
dwAvailPageFile
返回可用的页面文件大小,以
字节(byte)为单位。
dwTotalVirtual
dwAvailVirtual
MEMORYSTATUS结构,
结构的定义如下:
1
2
3
4
5
6
7
8
9
10
|
MEMORYSTATUS STRUCT
dwLength
DWORD
? ;本结构的长度
dwMemoryLoad
DWORD
? ;已用内存的百分比
dwTotalPhys
DWORD
? ;物理内存总量
dwAvailPhys
DWORD
? ;可用物理内存
dwTotalPageFile
DWORD
? ;交换文件总的大小
dwAvailPageFile
DWORD
? ;交换文件中空闲部分大小
dwTotalVirtual
DWORD
? ;用户可用的地址空间
dwAvailVirtual
DWORD
? ;当前空闲的地址空间
MEMORYSTATUS ENDS
|