1、创建映射区的过程中,隐含着一次对映射文件的读操作。
2、当MAP_SHARED时,要求:映射区的权限应<=文件打开的权限(处于对映射区的保护)。而MAP_PRIVATE则无所谓,因为mmap中的权限是对内存的限制。
(MAP_PRIVATE只对内存改动,并不会改动文件内容)。
3、映射区的释放与文件关闭无关。因为只要映射成功,文件可以立即关闭。
4、特别注意,当映射文件的大小为0时,不能创建映射区。所以:用于映射的文件必须有实际的大小!!
mmap使用时常常会出现总线错误,通常是由于共享文件存储空间大小引起的。如,400字节大小的文件,在建立映射区时offset4096字节,则会报出总线错误。
5、munmap传入的地址一定是mmap的返回地址。坚决杜绝指针++操作。
6、如果文件偏移量必须为4K的整数倍。(因为映射是由mmu完成的,mmu最小单位是4096字节。)
7、mmap创建映射区出错概率非常高,一定要检查返回值,确保映射区建立成功后在进行后续操作。
原文:https://www.cnblogs.com/promote/p/15335605.html