Кто-то, пожалуйста, уточните, что происходит с указателями после разветвления ().
Насколько я понимаю, указатели на что-либо в стеке или статически размещенные относятся к регистрам стека / сегмента данных, поэтому копирование их точно во время разветвления - это нормально.
Тем не менее, что произойдет, если я что-то произвёл malloc () перед разветвлением? например:
void* p = malloc(64);
// put something in *p;
fork();
// what happens to p and the memory i allocated here?
возможностей, о которых я думаю:
* p копируется в какую-то другую часть кучи, p обновляется, чтобы отразить вновь скопированное местоположение.
p по-прежнему указывает на оригинал. если любой ребенок бежит на свободу (р); родитель может быть не в состоянии получить к нему доступ.
p по-прежнему указывает на исходные данные, но дочерний процесс не имеет прав на доступ к памяти или управление ею.
Какой из них, если таковой имеется, является правильным?