我正在学习 WINAPI 编程并通过编写 winapi 代码做一些实验。当我转向“使用 winapi 进行内存管理”主题时,我看到有一些“内存操作机制”是
Virtual Memory
> LPVOID VirtualAlloc(
LPVOID lpAddress,
SIZE_T dwSize,
DWORD flAllocationType,
DWORD flProtect);
Memory Mapped Files
> HANDLE CreateFileMappingA(
HANDLE hFile,
LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
DWORD flProtect,
DWORD dwMaximumSizeHigh,
DWORD dwMaximumSizeLow,
LPCSTR lpName
);
Heaps
> HANDLE HeapCreate(
DWORD flOptions,
SIZE_T dwInitialSize,
SIZE_T dwMaximumSize
);
但我无法理解,何时使用虚拟内存以及何时使用堆机制类似地用于内存映射文件。使用其中任何一个的实时示例是什么,或者从程序员的角度来看,在哪种情况下我必须更喜欢虚拟内存、映射文件、堆?