본문 바로가기
C

메모리 초기화 관련..오류

by 상레알 2011. 4. 1.
출처 : http://forum.falinux.com/zbxe/?document_srl=408156


*** glibc detected ***              : double free or corruption (fasttop): 0x09f66880 ***


위와 같은 에러는 free() 함수 때문에 발생하는대..

free 함수는 메모리를 시스템에 반환 한다는 것으로

보통 malloc 이나 calloc 함수를 사용하고 난후 해체할때 사용한다.

free함수는 포인터 값이 NULL 이면 작업을 취소한다. ㅐ서

그러나 여기서 free()를 호출한 후에 포인터의 주소값이 NULL로 초기화 되질 않는다.

그러므로 이 변수를 다시 free() 로 호출하면, 위와 비슷한 오류가 발생하는대 이런 문제를 해결하기 위해서

free 한 후 NULL 로 초기화를 해주는것이 좋다.

물론 더 이상 포인터 변수가 사용되지 않는다면 필요 없지만....



free(res);

res = NULL


'C' 카테고리의 다른 글

return 의미  (0) 2011.03.29
파일 입출력  (0) 2010.11.23
재지정( redirection) 이란  (0) 2010.11.23
포인터 개념  (0) 2010.06.11
공백포함 문자 입력  (0) 2009.05.07
구조체 포인터...  (0) 2009.04.07
파일 접근 모드  (0) 2009.03.31
라이브러리  (0) 2009.02.24
C 라이브러리 제작? 사용  (0) 2009.02.24
연산자 우선순위  (0) 2009.02.16