使用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后,不能再去使用映射的内存。