Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Pagefile支持的内存映射文件与堆——什么';有什么区别?_C++_C_Winapi_Heap_Memory Mapped Files - Fatal编程技术网

C++ Pagefile支持的内存映射文件与堆——什么';有什么区别?

C++ Pagefile支持的内存映射文件与堆——什么';有什么区别?,c++,c,winapi,heap,memory-mapped-files,C++,C,Winapi,Heap,Memory Mapped Files,使用由系统分页文件支持的内存映射文件(通过CreateFileMapping(无效的\u HANDLE\u值,…))有什么好处,而不是像通常那样从堆中分配内存(malloc(…),HeapAlloc(…)),等等) i、 e.我应该在什么时候使用哪个?它的级别较低,它提供给您的比malloc提供的更多: 您可以与其他进程共享映射(当然,您还需要同步) 您可以设置对内存的权限(例如,您可以通过PAGE\u READONLY拥有只读内存) 您可以设置一些缓存/页面参数 它还应避免复制文件两次。共享

使用由系统分页文件支持的内存映射文件(通过
CreateFileMapping(无效的\u HANDLE\u值,…)
)有什么好处,而不是像通常那样从堆中分配内存(
malloc(…)
HeapAlloc(…)
),等等)


i、 e.我应该在什么时候使用哪个?

它的级别较低,它提供给您的比
malloc
提供的更多:

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

它还应避免复制文件两次。共享内存是Windows中任何IPC机制的核心。