页面文件支持的内存映射文件与堆 - 有什么区别?

Meh*_*dad 2 c c++ heap winapi memory-mapped-files

什么是利用系统页面文件支持的内存映射文件的优势(通过CreateFileMapping(INVALID_HANDLE_VALUE, ...),而不是仅仅从堆中分配内存的常用方法(malloc(...),HeapAlloc(...)等)?

我什么时候应该使用哪个?

cni*_*tar 6

这是较低的水平,它给你的不仅仅是malloc:

  • 您可以与其他进程共享映射(当然您还需要同步)
  • 您可以设置内存的权限(例如,您可以通过只读内存PAGE_READONLY)
  • 您可以设置一些缓存/页面参数