동적할당(malloc)을 쓰는데 메모리 해제가 안됩니다. 도와주세요

voice32342의 이미지
akayong의 이미지

mp 와 mp_record 는 무슨 관계가있지요?

voice32342의 이미지

아 mp 와 mp_record는 같은건데 제가 실수로 잘못 올려버렸네요

twinwings의 이미지

생략된 코드 때문에 전혀 모르겠고,

(24시간돌리는 데몬이 아닌 이상) free를 안한다고 프로그램이 죽지도 않습니다.

그보다 free를 두번 동작하게 되면 세그폴트가 납니다.

1. free 동작 이후에는 null값 넣어두세요. 실수로 free를 두번 호출하게되도 안전합니다.

2. free(mp_record) 대신 추적용 로그를 뿌려보세요.
printf("memory free at %d\n", __LINE__); // 콘솔이 아니라면 파일입출력 이용

voice32342의 이미지

백연구원의 이미지

주어진 코드만 갖고는 알 수가 없네요. 1번은 @twinwings님 말씀처럼 double free가 야기될 수 있고, 2번은 문제 없어 보이고, 3번은 함수 자체가 언제 호출되는지 언급이 없는데요. valgrind를 돌려 보시죠? 대략적으로 누수가 발생하는 위치를 찾아줍니다.


소곤소곤

voice32342의 이미지

a

chocokeki의 이미지

이미 먹튀당한 글입니다