[완료]fork() 함수의 호출로 힙영역의 복사 시점에 대해서 궁금한 게 있습니다~~..

cain의 이미지

fork() 함수 시 , 메모리의 영역이 복사되는 점에 대해서 여쭤보고 싶습니다.

fork()함수를 호출하면,

만약 힙 영역에 동적으로 할당된 영역이 있다면 그것을 가리키는 포인터 int*a 라는 변수가 있다고 가정하면,

부모프로세스에서 할당된 힙 영역을 가리키는 포인터만 복사되나요 아니면 힙 영역까지 복사 되나요 ?
힙 영역에 수정이 일어날 때만 자식 프로세스에 힙 영역이 복사되어 그때서야 개별적인 메모리 영역을 가리키게 되고 수정이 일어나기 전까진 같은 (부모프로세스의) 힙 영역을 가리키는 포인터 변수만 복사된다는 말을 들어서... 헷갈리네요..

어떤 게 맞는 말인지.. 답변 부탁드립니다..

nthroot의 이미지

text영역을 제외한 모든 영역..

힙도 같이 복사가 되므로 child/parent 각각에서 해제를 해야 합니다.

------식은이 처------
길이 끝나는 저기엔 아무 것도 없어요. 희망이고 나발이고 아무 것도 없어.

pastime의 이미지

커널의 COW (Copy On Write) 구현에 대한 내용과 혼동하시는 것 같은데
그냥 힙 영역 전체가 복사된다고 생각하시면 됩니다.

cain의 이미지

답변 달아주신 분들께 정말 고맙습니다..//

선배께서 알려주신 부분인데, 잠깐 헷갈리셨나보네요.. ^^;;

WANNA BE FREE

by chaoxifer