| [ 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개를 써먹었으니까... |