#include "stdafx.h"
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
int nStack(0);
MEMORY_BASIC_INFORMATION mi = {0};
DWORD dwHeaps = GetProcessHeaps(0, NULL);
printf("该进程拥有%d个堆:\n",dwHeaps);
LPHANDLE pHeaps = new HANDLE[dwHeaps];
if(pHeaps != NULL)
{
MEMORY_BASIC_INFORMATION mi = {0};
GetProcessHeaps(dwHeaps, pHeaps);
for(DWORD i=0; i<dwHeaps; ++i)
{
VirtualQuery((LPVOID)pHeaps[i], &mi, sizeof(mi));
printf("第%d个堆的指针指向地址:0x%08x\n",i+1,(DWORD)mi.BaseAddress);
}
delete []pHeaps;
}
return 0;
}
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
int nStack(0);
MEMORY_BASIC_INFORMATION mi = {0};
DWORD dwGet = VirtualQuery(&nStack, &mi, sizeof(mi));
//DWORD dwGet = VirtualQueryEx(GetCurrentProcess(),&nStack,&mi,sizeof(mi));
DWORD dwHeaps = GetProcessHeaps(0, NULL);
printf("该进程拥有%d个堆:\n",dwHeaps);
LPHANDLE pHeaps = new HANDLE[dwHeaps];
if(pHeaps != NULL)
{
MEMORY_BASIC_INFORMATION mi = {0};
GetProcessHeaps(dwHeaps, pHeaps);
for(DWORD i=0; i<dwHeaps; ++i)
{
VirtualQuery((LPVOID)pHeaps[i], &mi, sizeof(mi));
printf("第%d个堆的指针指向地址:0x%08x\n",i+1,(DWORD)mi.BaseAddress);
}
delete []pHeaps;
}
return 0;
}