#include "iostream.h" #include "windows.h" VOID * pAddress=NULL; char path[512]={0}; MEMORY_BASIC_INFORMATION t; main() { DWORD dwResult=VirtualQuery(pAddress,&t,sizeof(MEMORY_BASIC_INFORMATION)); while(dwResult) { cout<<"内存地址起始地址:"<<pAddress<<endl; switch(t.State) { case MEM_COMMIT: cout<<"已经物理分配"<<endl; break; case MEM_RESERVE: cout<<"保留"<<endl; break; case MEM_FREE: cout<<"空闲没有分配"<<endl; break; default: break; } switch(t.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+t.RegionSize; dwResult=VirtualQuery(pAddress,&t,sizeof(MEMORY_BASIC_INFORMATION)); } }