内存映射是将磁盘上某文件的一部分或整个文件映射到应用程序地址空间内某个地址范围的一种机制。然后,应用程序可采用与访问动态内存相同的方法访问磁盘上的文件。与使用fread和fwrite等函数相比,能够加快文件的读取和写入速度。
实际上,就是将文件在磁盘上的地址映射为虚拟内存。
1.读写二进制文件
将int16二进制文件映射到内存中,跳过前1000个字节。注意是字节,不是数的个数。对于int16类型来说,相当于跳过前500个数。
m
可以看到,m是一种memmapfile数据类型。(本质上就是个结构体)
![9c4602b932dbc3d50d263f73d7c8ee9a.png](https://img-blog.csdnimg.cn/img_convert/9c4602b932dbc3d50d263f73d7c8ee9a.png)
此时,文件已经被映射到虚拟内存上,可以利用m.Data进行读取。
![f43ddb2ac2b842546600f7d1ff6a466d.png](https://img-blog.csdnimg.cn/img_convert/f43ddb2ac2b842546600f7d1ff6a466d.png)
如果想要进行数据写入的话,需要将Writable值设为true,然后直接修改m.Data值,即可完成对磁盘上文件的修改。