有人请说明fork()之后指针会发生什么.
据我了解,指向堆栈上任何内容或静态分配的指针都与堆栈/数据段寄存器相关,因此在fork期间准确复制它们是可以的.
但是,如果我在分叉前使用malloc()会发生什么?例如:
void* p = malloc(64);
// put something in *p;
fork();
// what happens to p and the memory i allocated here?
Run Code Online (Sandbox Code Playgroud)
我想到的可能性:
*p被复制到堆的其他部分,p被更新以反映新复制的位置.
p仍然指向原始.如果有孩子自由奔跑(p); 父母可能无法访问它.
p仍指向原始数据,但子进程无权访问/管理内存.
哪些,如果有的话,是正确的?