xp下用户程序空间分配(1):大致框架[VC/C++编程]
本文“xp下用户程序空间分配(1):大致框架[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
《windows核心编程》奉告我们,关于每个利用程序的4G虚拟空间可以分为4个大块:
0x0000 0000 ~ 0x0000 ffff:空指针赋值分区
0x0001 0000 ~ 0x7ffe ffff:用户情势分区
0x7fff 0000 ~ 0x7fff ffff:64K禁入分区
0x8000 0000 ~ 0xffff ffff:内核情势分区
但是再要具体点就需求自己研究了.
咱就来看看一个利用程序是怎么利用这4G的空间的 .先写段代码查询一下这4G空间中内存块的大致分类:
SYSTEM_INFO info;
MEMORY_BASIC_INFORMATION mi;
HANDLE hProcess;
DWORD dwAddr;
MEMORY_BASIC_INFORMATION miBlock[1000];
int nCount = 0;
hProcess = GetCurrentProcess();
GetSystemInfo(&info);
dwAddr = (DWORD) info.lpMinimumApplicationAddress;
do
{
VirtualQueryEx(hProcess, (LPCVOID) dwAddr, &mi, sizeof(mi));
memcpy(&miBlock[nCount++], &mi, sizeof(mi));
dwAddr += mi.RegionSize;
} while(dwAddr < (DWORD) info.lpMaximumApplicationAddress);
print_block_table(miBlock, nCount);
……
在这种方法下,将可以得到249个内存块,以下表所示(全部值均为 十六进制):
以上是“xp下用户程序空间分配(1):大致框架[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |