打印
[应用相关]

内存映射(mmap)基本案例

[复制链接]
667|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

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

<p>#include <sys/mman.h></p><p>#include <fcntl.h></p><p>#include <unistd.h></p><p>#include <iostream></p><p>
</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>
</p><p>    void* mappedMemory = mmap(NULL, fileSize, PROT_READ | PROT_WRITE, MAP_SHARED, fileDescriptor, 0);</p><p>    close(fileDescriptor);</p><p>
</p><p>    // 对映射的内存进行读写操作</p><p>    char* data = static_cast<char*>(mappedMemory);</p><p>    data[0] = 'H';</p><p>    data[1] = 'i';</p><p>
</p><p>    // 解除内存映射</p><p>    munmap(mappedMemory, fileSize);</p><p>
</p><p>    return 0;</p><p>}</p>


使用特权

评论回复
沙发
药无尘| | 2024-2-29 11:11 | 只看该作者
代码格式好混乱,可以整理一下吗

使用特权

评论回复
板凳
digit0| | 2024-2-29 13:14 | 只看该作者
内存映射是为了更好的操作文件。

使用特权

评论回复
地板
理想阳| | 2024-2-29 13:15 | 只看该作者
内存映射(mmap)的优势在于:通过将文件或设备直接映射到进程地址空间,实现高效、大块数据的零拷贝访问和操作。

使用特权

评论回复
5
ClarkLLOTP| | 2024-2-29 17:31 | 只看该作者
内存映射是怎么实现的啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

206

主题

1815

帖子

2

粉丝