如果你没有释放你在Linux下的C程序中被恶意锁定的内存,它什么时候释放?在程序终止后?或者内存仍然被锁定,直到不可预知的时间(可能是在重启时)?
发布于 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
它们是不同的系统调用,它们做的是非常不同的事情。
发布于 2009-06-08 19:48:49
是的,当进程终止时,内存被释放。
发布于 2009-06-08 19:55:57
进程结束时肯定会释放malloc()ed内存,但不是通过调用free()。它是从MMU表中删除的整个内存映射(以线性RAM的形式呈现给进程)。
https://stackoverflow.com/questions/966632
复制相似问题