当前位置: 技术问答>linux和unix
fork与内存
来源: 互联网 发布时间:2016-03-13
本文导语: 一个小问题: 父进程中申请内存后,子,父进程是否都必须释放内存? 如果在子进程中没有对内存修改,是否删除不是必须的? 忘大家能给个明确的答复 | 多余多进程程序来说,两个进...
一个小问题:
父进程中申请内存后,子,父进程是否都必须释放内存?
如果在子进程中没有对内存修改,是否删除不是必须的?
忘大家能给个明确的答复
父进程中申请内存后,子,父进程是否都必须释放内存?
如果在子进程中没有对内存修改,是否删除不是必须的?
忘大家能给个明确的答复
|
多余多进程程序来说,两个进程之间使用的内存是互不相干的.
|
楼上第一个字打错了.那我就再解释一下.你用fork生成子进程之后,所有内存都会被复制一份,所有申请过的内存也都变成两份了,所以都需要释放.
|
父子进程没有共享的内存空间。除非一段内存是只读的。
|
也有很多的实现并不作一个父进程数据段和堆的完全拷贝。只有对一块内存修改时才会做拷贝。
|
只是copy pcb和页表,而且使用的是copy on write 技术。
|
对于你的程序,需要分别释放。至于是否拷贝,是内核的优化对于应用程序是完全透明的。
btw,考虑使用pthread库(线程),效率会更好。
btw,考虑使用pthread库(线程),效率会更好。