Windows提供了3种进行内存管理的方法
- 虚拟内存,最适合用来管理大型对象或结构数组。
- 内存映射文件,最适合用来管理大型数据流(通常来自文件)以及在单个计算机上运行
的多个进程之间共享数据。 - 内存堆栈,最适合用来管理大量的小对象。
保留:在地址空间分配一块区域
提交:给分配的区域分配实际的物理空间
虚拟内存使用,malloc的底层函数
VirtualAlloc用于分配虚拟内存
auto p = VirtualAlloc(nullptr, 4, MEM_RESERVE | MEM_TOP_DOWN | MEM_COMMIT, PAGE_READWRITE);
分配的空间会自动对齐到页面大小,一般4KB
回收使用VirtualFree,释放保留区域,指定MEM_RELEASE,回收提交的物理存储,使用MEM_DECOMMIT,回收也会按页分配粒度进行回收
VirtualFree(p, 0, MEM_RELEASE);