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