首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux下C语言中内存的释放

Linux下C语言中内存的释放
EN

Stack Overflow用户
提问于 2009-06-08 19:47:34
回答 7查看 2.3K关注 0票数 1

如果你没有释放你在Linux下的C程序中被恶意锁定的内存,它什么时候释放?在程序终止后?或者内存仍然被锁定,直到不可预知的时间(可能是在重启时)?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2009-06-08 19:52:11

进程结束时,由malloc()分配的内存将被释放。但是,使用shmget()分配的内存在进程结束时不会被释放。小心点。

编辑:

mmap()不是shmget()阅读这里的区别:http://www.opengroup.org/onlinepubs/000095399/functions/mmap.html http://www.opengroup.org/onlinepubs/009695399/functions/shmget.html

它们是不同的系统调用,它们做的是非常不同的事情。

票数 16
EN

Stack Overflow用户

发布于 2009-06-08 19:48:49

是的,当进程终止时,内存被释放。

票数 8
EN

Stack Overflow用户

发布于 2009-06-08 19:55:57

进程结束时肯定会释放malloc()ed内存,但不是通过调用free()。它是从MMU表中删除的整个内存映射(以线性RAM的形式呈现给进程)。

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

https://stackoverflow.com/questions/966632

复制
相关文章

相似问题

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