KAIST

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ KAIST ] in KIDS
글 쓴 이(By): pictor (gaugefield)
날 짜 (Date): 2001년 4월 17일 화요일 오전 11시 51분 44초
제 목(Title): Re: [Q]C프로그램에서 free로 에러가 날때.


[ KAIST ] in KIDS
글 쓴 이(By): guest (lleg) <good.kaist.ac.kr>
날 짜 (Date): 2001년 4월 17일 화요일 오전 04시 02분 48초
제 목(Title): [Q]C프로그램에서 free로 에러가 날때.



  free(ptr)를 했을때 프로그램이 항상 멈춥니다..
  디버깅을 할려면 도대체 어떤 식으로 접근해야 할까요...

+++

#include <stdio.h>
#include <stdlib.h>

int
main(void)
{
        char *p;

        p = malloc(16);
        p++;
        free(p);
        return 0;
}

위에서처럼 malloc한 pointer랑 free하는 pointer가 다를때 죽을 수도 있고...
또는 아래처럼

int
xxmain(void)
{
        char *p, *q;
        int i;

        p = malloc(16);
        q = malloc(16);

        for (i=0; i < 1000; i++)
                p[i] = 0;

        fprintf(stderr, "%s(): 00\n", __FUNCTION__);
        free(p);
        fprintf(stderr, "%s(): 10\n", __FUNCTION__);
        free(q);
        fprintf(stderr, "%s(): 20\n", __FUNCTION__);
        return 0;
}

malloc한 양보다 더 많이 사용한 경우에도 죽을 수가 있습니다.
위의 경우, 16개 멀럭해놓고 1000개를 써먹었으니까...


[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.