|
发表于 2007-2-23 13:02:35
|
显示全部楼层
Post by cccer
你说得不对.
libc能检测到当前有多少指针引用指向同一个内存块吗?如果这样的话那就根本可以像java那样只要检测到一个内存块没有被任何指针指向就自动释放掉,还用这么麻烦程序员手动释放吗? 是fork的时候那个管理实例的变量加一,程序每fork一次产生的子进程继承一次父进程打开的实例。父子进程单方面都不能关闭一个实例。所以,这个实例(比如说文件描述符代表的实例)需要同时对子进程和父进程都有效。
父子进程都用free来释放是需要将fork时候加1的变量值减1.当减到0的时候,系统就会释放这个实例,这也是手动释放,释放的原因是手动free,但是最终导致实例释放的是操作系统
。他等待接受到足够多free才会释放。 |
|