内存知识集.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
默认基地址。Visual C++链接程序使用的默认基地址是0 x 0 0 4 0 0 0 0 0,因为这是在运行Wi n d o w s9 8时可执行文件的映象可以加载到的最低地址。 Ge t M o d u l e H a n d l e函数返回可执行文件或D L L文件加载到进程的地址空间时所用的 句柄/基地址:调用G e t M o d u l e H a n d l e并传递N U L L值,就会返回进程的地址空间中可执行文件的基地址。因此,即使通过包含在D L L中的代码来调用(N U L L),返回的值也是可执行文件的基地址,而不是D L L文件的基地址。 获得一个指向进程的完整命令行的指针,方法是调用G e t C o m m a n d L i n e函数:该函数返回一个指向包含完整命令行的缓存的指针,该命令行包括执行文件的完整路径名。 每个进程都有一个与它相关的环境块。环境块是进程的地址空间中分配的一个内存块。每个环境块都包含一组字符串, 一个是线程的内核对象,操作系统用它来对线程实施管理。内核对象也是系统用来存放线程统计信息的地方。 另一个是线程堆栈,它用于维护线程在执行代码时需要的所有函数参数和局部变量 进程使用的系统资源比线程多得多,原因是它需要更多的地址空间 线程只有一个内核对象和一个堆栈,保留的记录很少,因此需要很少的内存 过调用G e t T h r e a d Ti m e s函数,线程可以查询它自己的线程时间: 每个进程都被赋予它自己的虚拟地址空间。对于3 2位进程来说,这个地址空间是4 G B,因为3 2位指针可以拥有从0 x 0 0 0 0 0 0 0 0至0 x F F F F F F F F之间的任何一个值。由于每个进程可以接收它自己的私有的地址空间,因此当进程中的一个线程正在运行时,该线程可以访问只属于它的进程的内存。属于所有其他进程的内存则隐藏着,并且不能被正在运行的线程访问。 进程地址空间的这个4 M B分区是Windows 98需要的,目的是维护M S - D O S应用程序与1 6位 应用程序之间的兼容性 当进程被创建并被赋予它的地址空间时,该可用地址空间的主体是空闲的,即未分配的。 若要使用该地址空间的各个部分,必须通过调用Vi r t u a l A l l o c函数(第1 5章介绍)来分配它里边 的各个区域。对一个地址空间的区域进行分配的操作称为保留( r e s e r v i n g )。 G e t S y s t e m I n f o函数将用于检索与主机相关的值 d w P a g e S i z e 用于显示C P U的页面大小。在x86 CPU上,这个值是4 0 9 6字节。在 Alpha CPU上,这个值是8 1 9 2字节。在I A - 6 4上,这个值是8 1 9 2字节 l p M i n i m u m A p p l i c a t i o n A d d r e s s 用于给出每个进程的可用地址空间的最小内存地址。在Windows 98上,这个值是4 194 304,或0 x 0 0 4 0 0 0 0 0,因为每个进程的地址空间中下面的4 M B是不能使用的。在Windows 2000上,这个值是65 536或0 x 0 0 0 1 0 0 0 0,因为每个进程的地址空间中开头的6 4 K B总是空闲的l p M a x i m u m A p p l i c a t i o n A d d r e s s 用于给出每个进程的可用地址空间的最大内存地址。在Windows 98上,这个地址是2 147 483 647或0 x 7 F F F F F F F,因为共享内存映射文件区域和共享 操作系统代码包含在上面的2 GB分区中。在Windows 2000上,这个地址是内核方式内存开始的地址,它不足6 4 K Bd w A l l o c a t i o n G r a n u l a r i t y 显示保留的地址空间区域的分配粒度。截止到撰写本书时,在所有Wi n d o w s平台上,这个值都是65 536 G l o b a l M e m o r y S t a t u s可用于检索关于当前内存状态的动态信息: 调用Vi r t u a l Q u e r y(E x)函数时,p v A d d r e s s参数必须包含你想要 查询其信息的虚拟内存地址。P m b i参数是你必须分配的M E M O RY _ B A S I C _ I N F O R M AT I O N结 构的地址。该结构在Wi n N T. h文件中定义为下面的形式 B a s e A d d r e s s 与p v A d d r e s s参数的值相

文档评论(0)

82393aa + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档