win 32Api获取系统内存函数
windows编程中 获取系统内存信息有2个api,分别是GlobalMemoryStatus和GlobalMemoryStatusEx,GlobalMemoryStatus函数可以在C语言咧直接调用,但是GlobalMemoryStatusEx却不可以直接调用,因为GlobalMemoryStatusEx被写在了系统的kernel32.dll动态链接库里面,所以我们在使用GlobalMemoryStatusEx要加载kernel32.dll库
2个函数的不同点:
总的来说这2个函数都可以获取到内存信息,但是GlobalMemoryStatusEx函数是GlobalMemoryStatus函数的增强,GlobalMemoryStatus虽然可以获取,但当你的机器里装了2条内存条是,她只能获取到一条的内存信息容量,而GlobalMemoryStatusEx函数却可以获取到所有,只要你系统识别的内存大小
1、GlobalMemoryStatus函数的用法:
引用头文件#include <windows.h>
MEMORYSTATUS CMemoryFunction::GetMemoryStatus() { MEMORYSTATUS status;//定义存放内存信息的变量 GlobalMemoryStatus(&status);//调用GlobalMemoryStatus函数获取内存信息 SIZE_T phyPart = status.dwTotalPhys/1000/1000; std::cout<<"PartPhysMemory:"<<phyPart<<"M"<<std::endl; return status; }
2、GlobalMemoryStatusEx函数的用法:
typedef void(WINAPI* FunctionGlobalMemoryStatusEx)(LPMEMORYSTATUSEX);//声明函数原型指针 MEMORYSTATUSEX CMemoryFunction::GetMemoryStatusEx() { HMODULE hModule; FunctionGlobalMemoryStatusEx GlobalMemoryStatusEx; MEMORYSTATUSEX status; status.dwLength = sizeof(status); LPCWSTR dllName = L"kernel32.dll"; hModule = LoadLibrary(dllName);//载入动态链接库kernel32.dll,返回它的句柄 if(NULL==hModule)//判断载入dll是否成功 { return status; } //在kernel32.dll句柄里查找GlobalMemoryStatusEx函数,返回改函数的指针 GlobalMemoryStatusEx =(FunctionGlobalMemoryStatusEx)GetProcAddress(hModule,"GlobalMemoryStatusEx"); if(NULL==GlobalMemoryStatusEx)//判断函数是否找到 { return status; } GlobalMemoryStatusEx(&status);//调用函数取得系统的内存情况 FreeLibrary(hModule);//释放链接库句柄 DWORDLONG phyAll = status.ullTotalPhys/1000/1000; std::cout<<"AllPhysMemory:"<<phyAll<<"M"<<std::endl; return status; }
本机运行结果
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇:没有了
- 下一篇:没有了