释放虚拟内存

VirtualFree 函数根据以下规则取消提交和释放页面:

  • 取消提交一个或多个已提交页面,将页面的状态更改为保留。 取消提交页面会释放与页面关联的物理存储,使其可供任何进程分配。 可以取消提交任何已提交页块。
  • 释放包含一个或多个保留页的块,将页面的状态更改为释放。 释放页块会使进程分配的保留地址范围可用。 只能通过释放最初由 VirtualAlloc 保留的整个块来释放保留页。
  • 同时取消提交和释放一个或多个已提交页面的块,从而将页面的状态更改为释放。 指定的块必须包含 最初由 VirtualAlloc 保留的整个块,并且当前必须提交所有页面。

释放或取消提交内存块后,永远无法再次引用它。 该内存中可能已存在的任何信息将永远消失。 尝试读取或写入免费页面会导致访问冲突异常。 如果需要信息,请不要取消提交或释放包含该信息的内存。

若要指定不再关注内存范围中的数据,请使用 MEM_RESET调用 VirtualAlloc。 页面将不会从分页文件中读取或写入到分页文件中。 但是,内存块稍后可以再次使用。