• 5675阅读
  • 2回复

在Windows下MinGW环境下怎么得到物理内存的大小 [复制链接]

上一主题 下一主题
离线cdanger
 
只看楼主 倒序阅读 楼主  发表于: 2008-05-09
— 本帖被 XChinux 执行加亮操作(2008-05-09) —
做一个程序,要给一个计算程序分配可用内存,得先获得可用的物理内存数。
哪位知道怎么得吗?
WindowsXP
MinGW
QT4.3.x
离线XChinux

只看该作者 1楼 发表于: 2008-05-09
用Win32 API

GlobalMemoryStatus,Win32 API函数。

此函数用来获得当前可用的物理和虚拟内存信息,函数定义为:

VOID GlobalMemoryStatus
(
    LPMEMORYSTATUS lpBuffer       
);

此函数无返回值,参数是一个指向名为MEMORYSTATUS的结构的指针。函数的返回信息会被存储在MEMORYSTATUS结构中。

此函数用来替代用来支持16位应用程序的GetFreeSpace函数。

应用程序应该在申请内存前调用此函数以防止影响到其他程序运行。

这个函数的返回值是动态的,并且可能返回相同的值。

关于MEMORYSTATUS结构:

机构定义:
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
返回调用进程的用户模式部分的全部可用虚拟地址空间,以字节(byte)为单位。

dwAvailVirtual
返回调用进程的用户模式部分的实际自由可用的虚拟地址空间,以字节(byte)为单位。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线cdanger
只看该作者 2楼 发表于: 2008-05-14
这个API是VC的吧?MinGW好像没有。
快速回复
限100 字节
 
上一个 下一个