LINUX.ORG.RU

fork() c++


0

0

Скажите, если в си++ коде встречается следующий участок A *a_ = new A(); fork() У нас происходит разветвление процесса, в каждом из процессов есть указатель a_. Эти указатели указывают на один объект в памяти или на разные объекты? Если я все правильно понимаю у них одинаковые значения, и если в одном из процессов удалить объект на который ссылается указатель, во втором процессе объект останется?


Нет. Память процессов раздельна. Если надо разделять объекты между процессами - см. man shm_overview.

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

Или потоки используй - у них память общая.

Begemoth ★★★★★
()

указывают на один участок памяти, но если туда начать писать то произойдёт copy-on-write и у каждого процесса будет свой экземпляр этой страницы памяти.

Начни изучение форка с man fork, там всё написано.

true_admin ★★★★★
()

при изменении значения куска памяти копируется вся страница - так что передачи информации через память не будет если не сделать этого специально через shared memory.

sleepy
()

>если в одном из процессов удалить объект на который ссылается указатель, во втором процессе объект останется?

да

linuxfan
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.