Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.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++ 什么是内存映射文件?_C++_Terminology_Mmap_Memory Mapped Files - Fatal编程技术网

C++ 什么是内存映射文件?

C++ 什么是内存映射文件?,c++,terminology,mmap,memory-mapped-files,C++,Terminology,Mmap,Memory Mapped Files,最近,我遇到了一个演示如何在文件io中使用mmap()。但是,我找不到他记录该功能的视频。我不了解它是什么,它为什么存在,也不了解它与文件的关系 太多的行话在我头上飞来飞去,弄不懂它的意思。我对维基百科这样的网站也有同样的问题。文件是存储在文件系统中的字节数组 在这种情况下,“内存”是存储在RAM中的字节数组 内存映射是操作系统所做的事情。这意味着内存中的某些字节范围具有某种特殊意义 内存映射文件通常是文件系统中的文件,操作系统已将其映射到进程内存中的某个字节范围。当进程写入进程的内存时,操作系

最近,我遇到了一个演示如何在文件io中使用
mmap()
。但是,我找不到他记录该功能的视频。我不了解它是什么,它为什么存在,也不了解它与文件的关系


太多的行话在我头上飞来飞去,弄不懂它的意思。我对维基百科这样的网站也有同样的问题。

文件是存储在文件系统中的字节数组

在这种情况下,“内存”是存储在RAM中的字节数组

内存映射是操作系统所做的事情。这意味着内存中的某些字节范围具有某种特殊意义


内存映射文件通常是文件系统中的文件,操作系统已将其映射到进程内存中的某个字节范围。当进程写入进程的内存时,操作系统负责将字节写入文件,而当进程从内存读取时,操作系统负责读取文件。

令人尴尬的是,我在查看时没有理解它。总的来说,我不知道制作另一个文件来表示OG文件的内容会有什么帮助。这会不会像复制文件一样?@MasonMac:“总的来说,我不知道制作另一个文件来表示OG文件的内容会有什么帮助。”另一个文件来自哪里?内存映射涉及一个文件,而不是两个。当你发现一个未知的函数,你想了解更多的时候,把它的名字粘贴到你最喜欢的搜索引擎中总是一个好的开始,可能还有一些概念。搜索
内存映射mmap
会给你提供大量信息。恐怕我也很难理解它们。这应该很容易理解,但我就是不明白@尼古拉斯。由于mmap()将可能的内存存储在文件中而不是RAM中,这意味着该文件将是输入文件的副本。那么,它有什么用呢?我想我大错特错了。我没有粘贴到搜索引擎中,而是粘贴到搜索字段中。特别是这一页上的那个。你觉得如何理解谢谢。我以为这是个直截了当的问题。虽然这些评论是善意的,但我已经声明我不理解文档。@MasonMac:告诉我们你不理解文档并不能说明你为什么不理解文档。这是评论中向您提出的第一个问题,您从未回答过。当我不理解其中任何一个问题时,我如何回答?下次我将尝试修复mmap是否映射到设备文件内存,即阻止设备内存或任何内存。例如,如果我在打开某个块设备文件后指定某个io内存映射寄存器的地址,它会工作吗?