c - C 编程中的映射文件

标签 c file-io

我在某处读到,当常规 c/c++ 应用程序需要访问文件时,通常将文件的内容放入进程内存中,并使用内存操作读取或修改它。这称为内存映射或仅映射文件。

这是否意味着我需要复制(片上)缓冲区中的数据,并根据需要修改内容,然后将其写回到文件中?有具体的功能可以实现这个功能吗?

有人可以向我指出详细描述此内容的链接吗?问题是单词内存映射太宽泛,我无法找到确切的信息。

我正在使用 windows-7、Visual Studio 2010

最佳答案

不需要从文件复制数据。内存映射文件意味着,您用来“打开”文件的函数会为您提供一个包含该文件内容的缓冲区。该缓冲区不是复制文件内容的 RAM 内存,而是一个虚拟内存,其访问直接映射到磁盘上的文件。我不知道它在 Windows 中是如何工作的,但这就是 mmap() 调用在 Linux 中的作用。当您修改该缓冲区并关闭文件时,磁盘上的内容会自动更新。

关于c - C 编程中的映射文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12757435/

相关文章:

c - 链表的自由行为

c++ - 多任务处理和测量时差

c - Eclipse:gdbserver 找不到源文件

java - 将密码存储在文件 : RSA implementation 中

java - 使用文本文件更改java中用户帐户的密码?

java - 查询Java中的文件访问

python - 如何修复Python 3.7中的 'RuntimeError: input(): lost sys.stdin'错误

c - 通过串行端口发送文件

c++ - tmpnam 的 C/C++ 线程安全?

c - 读取 fifo 的最后一行