获取系统信息 、内存状态, 查询内存分配

#include <iostream> #include <windows.h> using namespace std; void QueryVirtualMem() { void *pAddress = NULL; MEMORY_BASIC_INFORMATION mbi; char path[512] = {0}; DWORD dwResult = VirtualQuery(pAddress,&mbi,sizeof(MEMORY_BASIC_INFORMATION)); while (dwResult) { cout<<"内存地址起始地址:"<<pAddress<<endl; switch (mbi.State) { case MEM_COMMIT: cout<<"已经提交"<<endl; break; case MEM_RESERVE: cout<<"已经保留"<<endl; break; case MEM_FREE: cout<<"空闲"<<endl; break; default: break; } switch(mbi.Type) { case MEM_IMAGE: cout<<"该地址为文件镜像:"<<endl; GetModuleFileName((HINSTANCE)pAddress,path,512); cout<<path<<endl; break; case MEM_MAPPED: cout<<"已经映射了"<<endl; break; case MEM_PRIVATE: cout<<"私有空间"<<endl; break; default: break; } cout<<endl; pAddress = (PBYTE)pAddress + mbi.RegionSize; dwResult = VirtualQuery(pAddress,&mbi,sizeof(MEMORY_BASIC_INFORMATION)); } } void main(int argc,TCHAR*argv[]) { /******************************GetSystemInfo************************************/ //共12个参数 SYSTEM_INFO si; GetSystemInfo(&si); //4个 cout<<"分配粒度 : "<<si.dwAllocationGranularity<<endl; cout<<"页面大小 : "<<si.dwPageSize<<endl<<endl; cout<<"每个进程的可用地址空间的最小内存地址 : "<<si.lpMinimumApplicationAddress<<endl; cout<<"每个进程的可用地址空间的最大内存地址 : "<<si.lpMaximumApplicationAddress<<endl<<endl; //2个 cout<<"CPU数目 : "<<si.dwNumberOfProcessors<<endl; cout<<"当前活动的CPU : "<<si.dwActiveProcessorMask<<endl<<endl; //4个 (有一个是用于Windows98的 没写出来) cout<<"CPU结构 : "<<si.wProcessorArchitecture<<endl; cout<<"CPU细分结构 : "<<si.wProcessorLevel<<endl; cout<<"CPU级别 : "<<si.wProcessorRevision<<endl<<endl; //2个 还有2个保留的 /****************************GlobalMemoryStatus**************************************/ MEMORYSTATUS ms = { sizeof(ms) }; GlobalMemoryStatus(&ms); cout<<"内存管理系统的繁忙程度 : "<<ms.dwMemoryLoad<<endl; cout<<"物理存储器的总字节数 : "<<ms.dwTotalPhys<<endl; cout<<"物理存储器的未使用总字节数 : "<<ms.dwAvailPhys<<endl; cout<<"页文件的总字节数 : "<<ms.dwTotalPageFile<<endl; cout<<"页文件的未使用总字节数 : "<<ms.dwAvailPageFile<<endl; cout<<"每个进程的地址空间中私有的总字节数 : "<<ms.dwTotalVirtual<<endl; cout<<"每个进程的地址空间中私有的未使用总字节数 : "<<ms.dwAvailVirtual<<endl<<endl; /****************************VirtualQuery**************************************/ QueryVirtualMem(); }

你可能感兴趣的:(获取系统信息 、内存状态, 查询内存分配)