内存映射是将文件的一部分直接映射到进程的地址空间,使得文件可以像内存一样被访问。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>
|