OfferVirtualMemory 函数 (memoryapi.h)
指示应用程序不再需要一系列内存页中包含的数据,系统可在必要时将其丢弃。
指定的页面将标记为不可访问,从进程工作集中删除,并且不会写入分页文件。
若要稍后回收提供的页面,请调用 ReclaimVirtualMemory。
语法
DWORD OfferVirtualMemory(
[in] PVOID VirtualAddress,
[in] SIZE_T Size,
[in] OFFER_PRIORITY Priority
);
参数
[in] VirtualAddress
要提供的内存的页对齐起始地址。
[in] Size
要提供的内存区域的大小(以字节为单位)。 Size 必须是系统页面大小的整数倍数。
[in] Priority
优先级 指示提供的内存对应用程序的重要性。 较高的优先级会增加在调用 ReclaimVirtualMemory 时可以完整回收提供的内存的概率。 系统通常先放弃优先级较低的内存,然后再放弃高优先级内存。 Priority 必须是以下值之一。
返回值
如果成功,ERROR_SUCCESS;否则 为系统错误代码 。
注解
若要回收提供的页面,请调用 ReclaimVirtualMemory。 回收页中的数据可能已被丢弃,在这种情况下,内存区域的内容未定义,必须由应用程序重写。
请勿调用 OfferVirtualMemory 来提供锁定的虚拟内存。 这样做将解锁指定的页面范围。
请注意,提供和回收虚拟内存类似于使用MEM_RESET和MEM_RESET_UNDO内存分配标志,不同之处在于 OfferVirtualMemory 从进程工作集中删除内存,并限制对所提供的页面的访问,直到回收它们。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 8.1 更新 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows Server 2012 R2 更新 [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | memoryapi.h (包括 Windows.h、Memoryapi.h) |
Library | onecore.lib |
DLL | Kernel32.dll |