windows提供了三种操作内存的机制:
Virtual memory:适合用来操作大对象/结构数组
Memory-mapped files:适合操作文件流,或用来在同一台机器的不同进程之间用来共享数据
Heaps:适合用来管理大量的小对象
地址保留--Reserving a Region in an Address Space
这个时候fdwAllocationType可用MEM_RESERVE、MEM_TOP_DOWN等标记
提交存储--Committing Storage in a Reserved Region
还是使用VirtuallAlloc函数
不过这个时候fdwAllocationType可用MEM_COMMIT
这时fdwProtec可以与reserve时不同,不过建议reserver是就想好最终会使用怎样的保护
保留和提交同时进行--Reserving a Region and Committing Storage Simultaneously
保留和提交可以同时进行,这时只需fdwAllocationType为 MEM_RESERVE | MEM_COMMIT 即可
何时提交--When to Commit Physical Storage
只reserve未提交的地址是不能访问的
Virtual memory:适合用来操作大对象/结构数组
Memory-mapped files:适合操作文件流,或用来在同一台机器的不同进程之间用来共享数据
Heaps:适合用来管理大量的小对象
地址保留--Reserving a Region in an Address Space
PVOID VirtualAlloc(
PVOID pvAddress, // 希望保留的基础地址,会被向下倒CPU分配粒度
SIZE_T dwSize, // 需要保留的大小
DWORD fdwAllocationType, // 标志位
DWORD fdwProtec // 保护属性
);
这个时候fdwAllocationType可用MEM_RESERVE、MEM_TOP_DOWN等标记
提交存储--Committing Storage in a Reserved Region
还是使用VirtuallAlloc函数
不过这个时候fdwAllocationType可用MEM_COMMIT
这时fdwProtec可以与reserve时不同,不过建议reserver是就想好最终会使用怎样的保护
保留和提交同时进行--Reserving a Region and Committing Storage Simultaneously
保留和提交可以同时进行,这时只需fdwAllocationType为 MEM_RESERVE | MEM_COMMIT 即可
何时提交--When to Commit Physical Storage
只reserve未提交的地址是不能访问的