物理内存使用率(代码)
// Memory.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;
typedef void(WINAPI* FunctionGlobalMemoryStatusEx)(LPMEMORYSTATUSEX);//声明函数原型指针
MEMORYSTATUSEX GetMemoryStatus()
{
HMODULE hModule;
FunctionGlobalMemoryStatusEx GlobalMemoryStatusEx;
MEMORYSTATUSEX status1;
status1.dwLength = sizeof(status1);
hModule = LoadLibrary(L"kernel32.dll");//载入动态链接库kernel32.dll,返回它的句柄
if (NULL == hModule)//判断载入dll是否成功
{
//error.
MessageBox(NULL,TEXT("载入动态链接库kernel32.dll"),TEXT("错误"),MB_OK|MB_ICONERROR);
}
//在kernel32.dll句柄里查找GlobalMemoryStatusEx函数,返回改函数的指针
GlobalMemoryStatusEx = (FunctionGlobalMemoryStatusEx)GetProcAddress(hModule, "GlobalMemoryStatusEx");
if (NULL == GlobalMemoryStatusEx)//判断函数是否找到
{
//error
MessageBox(NULL,TEXT("函数查找不到"),TEXT("错误"),MB_OK|MB_ICONERROR);
}
GlobalMemoryStatusEx(&status1);//调用函数取得系统的内存情况
cout << "内存初始状态:" << endl;
cout << "物理内存使用率=" << status1.dwMemoryLoad<< endl;
cout << "总物理内存=" << status1.ullTotalPhys / 1024 / 1024 << "MB" << endl;
cout << "可用物理内存=" << status1.ullAvailPhys / 1024 / 1024 << "MB" << endl;
cout << "总页文件=" << status1.ullTotalPageFile / 1024 / 1024 << "MB" << endl;
cout << "可用页文件=" << status1.ullAvailPageFile / 1024 / 1024 << "MB" << endl;
cout << "总进程空间=" << status1.ullTotalVirtual / 1024 / 1024 << "MB" << endl;
cout << "可用进程空间=" << status1.ullAvailVirtual / 1024 / 1024 << "MB" << endl;
FreeLibrary(hModule);//释放链接库句柄
return status1;
}
int _tmain(int argc, _TCHAR* argv[])
{
SYSTEM_INFO sysInfo;
GetSystemInfo(&sysInfo);
cout << "机器属性:" << endl;
cout << "页大小=" << sysInfo.dwPageSize/1024 <<"KB"<< endl;
cout << "分配粒度=" << sysInfo.dwAllocationGranularity/1024<<"KB"<< endl;
cout << "用户区最小值=" << sysInfo.lpMinimumApplicationAddress << endl;
cout << "用户区最大值=" << sysInfo.lpMaximumApplicationAddress << endl << endl;
MEMORYSTATUS memStatus;
memStatus.dwLength = sizeof(memStatus);
GlobalMemoryStatus(&memStatus);
cout << "内存初始状态:" << endl;
cout << "物理内存使用率=" << memStatus.dwMemoryLoad << endl;
cout << "总物理内存=" << memStatus.dwTotalPhys/1024/1024<<"MB" << endl;
cout << "可用物理内存=" << memStatus.dwAvailPhys/1024/1024<<"MB" << endl;
cout << "总页文件=" << memStatus.dwTotalPageFile/1024/1024<<"MB" << endl;
cout << "可用页文件=" << memStatus.dwAvailPageFile/1024/1024<<"MB" << endl;
cout << "总进程空间=" << memStatus.dwTotalVirtual/1024/1024<<"MB" << endl;
cout << "可用进程空间=" << memStatus.dwAvailVirtual/1024/1024<<"MB" << endl;
cout << endl;
GetMemoryStatus();
getchar();
return 0;
}

浙公网安备 33010602011771号