关于内存分配和fork()的问题
fork产生的子进程会复制父进程的空间,在父进程中分配的内存是否也许要在
子进程中释放掉呢?
一个例子:
void main(){
void *ptr = malloc(10);
if(fork() == 0){ {
/* 请问这里是否也需要free(ptr)?*/
}
free(ptr);
}
[解决办法]
如不释放,在子进程执行 exec 之前,子进程中将持有第二份同样的内容的内存(cow 等底层实现不在讨论范围)所以如果需要继续运行而非 exec,应该记得在适当时候释放。