荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: oopilix ([0;1;32;40m), 信区: Visual
标  题: [zz]内存管理之四
发信站: 荔园晨风BBS站 (Mon Oct 13 23:05:04 2003), 站内信件

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函数,除了它
只改变指定进程内存的限制级之外。改变限制级在调试器访问被调试进程的内存的
时候会很有用处。

--

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 61.144.235.39]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店