fork 와 malloc 의 메모리 문제
글쓴이: shpark05 / 작성시간: 수, 2005/01/19 - 10:58오전
안녕하세요 ?
다름이 아니라, fork 와 malloc 에서 문제가 있어서요.
아래와 같은 구성이 있다고 할때요.
Quote:
char *test;int main()
{test = malloc( 100 );
if(!fork())
{
test_a();
}
sleep(100);
free(test);
}int test_a()
{
free(test);
sleep(10);
}
double free 로 결과가 나옵니다.
아마도 fork 개념이 잘 못 되었다는데 99% 을 걸지만,
혹시 몰라서 질문을 올립니다.
추신 : 일부 다른 OS 프로세스에서는 gcc 3.x 에서 double free 에러 메세지가
나오지 않습니다. linux 에서 나옵니다.
Forums:
Re: double free 맞네요
fork() 이후의 child 의 실행 경로를 잘 따져 보시길...
음.. 뭐 운영체제마다 틀리겠지만. 리눅스에서는 제가 알기론 fork를
음.. 뭐 운영체제마다 틀리겠지만. 리눅스에서는 제가 알기론 fork를 호출시에 fork() 여기서부터 그 아래 코드들만 복사해서 실행시키는 걸로 알고 있습니다.
------------------------------------------------------
아직은 젊다. 모든 것을 할 수 있는 나이란 말이지.
두번 free 하셨네요test_a() 를 실행하지 않은 프로세스는
두번 free 하셨네요
test_a() 를 실행하지 않은 프로세스는 main 함수 끝부분의
free 만 실행하지만 test_a() 를 실행한 프로세스는
test_a() 한에서 한번 free 하고 test_a() 함수를 종료한 후
main() 함수 끝에서 다시 한번 free 를 하는군요.
댓글 달기