王朝网络
分享
 
 
 

内存管理之四

王朝vc·作者佚名  2006-01-08
宽屏版  字体: |||超大  

Allocating Virtual Memory (分配虚拟内存)

虚拟内存函数用于操作内存页面。这些函数用当前机器上的页面的大小来实现描述内存的大小和地址的功能。

VirtualAlloc 函数执行以下的操作中的一个:

1、 预留一页或多页的自由页面。

2、 提交一页或多页预留页面。

3、 预留和提交一页或多页自由页面。

你可以指定你要预留或提交页面的起始地址,或者你也可以让系统来决定这个地址。函数将指定的地址调整到适当的页面边界。预留页面是不允许访问的,但已提交的页面可以被以页读/写、页只读、页访问禁止等访问规则进行分配。当页面被提交之后,在页面文件中就分配了存储区,但所有页面都只是在第一次试图读或写该页面的时候被调入物理内存。你可以用一般指针来访问用VirtualAlloc函数提交的内存。

Freeing Virtual Memory (释放虚拟内存)

VirtualFree函数执行以下操作中的一个:

1、 取消提交一个或更多的已提交页面,把页面状态切换到预留。取消提交的页面将释放于该页面相关联的物理存储区,使这片区域能够被任意进程重新使用。所有被提交的页面块都可以被取消提交。

2、 释放一片包含一个或多个预留页面的内存块,把页面状态切换到空闲。已释放的页面块能够被该进程重新使用。被预留页面只能够一次释放全部的之前使用VirtualAlloc函数预留的块。

3、 同时取消提交和释放一个包含一个或多个页面的块,将这些页面的状态切换为空闲。指定的块必须包含全部之前使用VirtualAlloc函数预留的块,而且通常所有这些页面已经被提交。

当一个内存块被释放或者取消提交之后,你就不能再引用它。所有之前在其中的信息都永远消失。试图在一个空闲页面上执行读写操作会导致一个访问违例。如果你还需要这些某些信息,那么请不要取消提交或者释放包含这些资料的内存。

如果想要说明某片内存区域的数据不再游泳,那么在调用VirtualAlloc时使用MEM_RESET参数。这样这些页面上的数据将不会在读取或写入页面文件。然而,这块内存仍可再次被使用。

Working With Pages (页面操作)

使用GetSystemInfo函数能够得到当前机器的页面大小。

VirtualQuery 和VirtualQuerayEx函数能够返回关于 某一进程的地址空间中始于指定地址的连续的页面空间 的资料。VirtualQuery返回关于调用进程的内存资料。VirtualQueryEx返回关于指定进程的内存资料而且通常能够支持需要处于调试态进程资料的调试器。页面区域会被限制在 向下调整到最近页面边界的指定地址上。一直延伸到所有拥有以下共同特性的后续页面:

1、 所有页面状态一致:是已提交或预留或空闲三状态之一。

2、 如果起始页面非空闲,那么所有该区域页面都是被VirtualAlloc一起初始化的内存页面组的一部分。

3、 所有页面访问控制级都一致:是 页只读、页读写、页禁止访问三级之一。

VirtualLock函数使进程能够锁定一页或多页已提交内存进入物理内存(RAM),防止系统将这些页面交换到页面文件中。它能够被用于确保在不进行磁盘访问的情况下使临界数据可访问。锁定页面进内存是危险的,这是因为它会限制系统管理内存的能力。的使用VirtualLock函数能够导致可执行代码被交换到页面文件从而降低系统性能。VirtualUnlock函数将被VirtualLock锁定的内存解锁。

VirtualProtect函数能够调整所有在进程地址空间中的已提交页面的访问限制级。比如,进程可以分配读写页面来存储常变数据,并且之后它能够把访问控制级改变为只读或者禁止访问来防止以外的改写。VirtualProtect是一个用VirtualAlloc分配的页面上的典型的应用,但是,它也能够应用于使用其它分配函数分配的页面上。然而,VirtualProtect改变了全部页面的保护级,但是其它分配函数返回的指针并不一定要页面对齐。VirtualProtectEx函数类似于VirtualProtect函数,除了它只改变指定进程内存的限制级之外。改变限制级在调试器访问被调试进程的内存的时候会很有用处。

下期预告:

Memory Management Functions (内存管理函数)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有