首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我必须要munmap() mmap()文件吗?

我必须要munmap() mmap()文件吗?
EN

Stack Overflow用户
提问于 2014-10-26 02:26:40
回答 3查看 4.9K关注 0票数 6

我对C++比较陌生,我正在从另一个人的代码中学习。他的代码从毫米波文件中读取,但最终没有释放任何映射内存。据我理解,mmap()将文件映射到虚拟内存中。我不需要以某种方式释放那些映射的内存,比如调用munmap()吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-10-26 02:35:33

我相信你应该用munmap释放映射内存。但是它将在exit()之后自动释放(就像关闭常规文件或套接字的syscall一样)。记住,隐式关闭/取消映射是糟糕的风格!

票数 6
EN

Stack Overflow用户

发布于 2014-10-26 02:35:12

当您完成时,只需使用munmap(),除非您的程序退出,否则就没有必要了,它将在退出时自动解除对该段的映射。

票数 2
EN

Stack Overflow用户

发布于 2018-08-27 14:15:39

munmap 自动发生在 exit

所以,如果程序无论如何都要退出,你就不需要这么做了。

man munmap 4.15说:

munmap()系统调用删除指定地址范围的映射,并使对范围内地址的进一步引用生成无效的内存引用。当进程终止时,该区域也会自动取消映射。另一方面,关闭文件描述符并不会解除对区域的映射。

当然,如果程序不退出,就会泄漏内存,就像malloc (现在使用mmap)一样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26569217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档