[应用相关] 内存映射(mmap)基本案例

[复制链接]
1044|4
 楼主| 小夏天的大西瓜 发表于 2024-2-28 22:00 | 显示全部楼层 |阅读模式

内存映射是将文件的一部分直接映射到进程的地址空间,使得文件可以像内存一样被访问。mmap 是 Linux 提供的用于内存映射的系统调用。

  1. <p>#include <sys/mman.h></p><p>#include <fcntl.h></p><p>#include <unistd.h></p><p>#include <iostream></p><p>
  2. </p><p>int main() {</p><p>    int fileDescriptor = open("example.txt", O_RDWR);</p><p>    off_t fileSize = lseek(fileDescriptor, 0, SEEK_END);</p><p>
  3. </p><p>    void* mappedMemory = mmap(NULL, fileSize, PROT_READ | PROT_WRITE, MAP_SHARED, fileDescriptor, 0);</p><p>    close(fileDescriptor);</p><p>
  4. </p><p>    // 对映射的内存进行读写操作</p><p>    char* data = static_cast<char*>(mappedMemory);</p><p>    data[0] = 'H';</p><p>    data[1] = 'i';</p><p>
  5. </p><p>    // 解除内存映射</p><p>    munmap(mappedMemory, fileSize);</p><p>
  6. </p><p>    return 0;</p><p>}</p>


药无尘 发表于 2024-2-29 11:11 | 显示全部楼层
代码格式好混乱,可以整理一下吗
digit0 发表于 2024-2-29 13:14 | 显示全部楼层
内存映射是为了更好的操作文件。
理想阳 发表于 2024-2-29 13:15 | 显示全部楼层
内存映射(mmap)的优势在于:通过将文件或设备直接映射到进程地址空间,实现高效、大块数据的零拷贝访问和操作。
ClarkLLOTP 发表于 2024-2-29 17:31 | 显示全部楼层
内存映射是怎么实现的啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

273

主题

2368

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部