当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:54:00  来源:本站整理

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++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • xp下用户程序空间分配(1):大致框架
  • <b>xp下用户程序空间分配(2):栈</b>
  • <b>xp下用户程序空间分配(3):加载文件</b>
  • xp下用户程序空间分配(4):加载主程序
  • <b>xp下用户程序空间分配(5):加载系统DLL</b>
  • xp下用户程序空间分配(6):加载用户DLL
  • <b>xp下用户程序空间分配(7):Heap</b>
  • xp下用户程序空间分配(8):MEM_MAPPED
  • <b>xp下用户程序空间分配(9):还剩下什么?</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .