使用mmap的坑点

函数原型:

void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);

int munmap(void *addr, size_t length);

 

坑点:调用了mmap,没调用munmap

原因:调用了mmap把共享内存映射到进程中的内存共享端(具体内容,网上搜素进程地址空间划分),但是没有调用munmap进行解除映射。

不停的调用mmap,会导致内存共享端地址使用完,再去打开或共享内存,就出现了错误。

备注:mmap映射的内存相当于new申请了一块堆内存,munmap解除映射的内存,相当于delete释放了一块堆内存,因此munmap后,不能再去使用映射的内存。

posted @ 2022-09-28 18:16  猿起5-2  阅读(300)  评论(0编辑  收藏  举报