C/C++ 프로그램을 하다 보면 종종 메모리를 할당하고 해제하지 않아
시스템에 부하를 주는 일이 다반사이다.

할당한 개수 만큼 해제했는지 일일이 쫓아 다니며 체크하기엔 무리인 경우가 많으며,
core가 떨어지면 core를 분석해보면 찾아갈 수도 있겠지만,

간단히, 해당 프로그램의 매크로로 정의를 해서 확인해 볼 수 있는 방법도 있겠다.

#define malloc(args...) \
           (fprintf(stderr, "malloc by %s\n", __FUNCTION__)) ? malloc(args) : NULL)

#define free(args...) \
do { \
           fprintf(stderr, "free by %s\n", __FUNCTION__);\
           free(args);\
} while(0)


#define realloc(x, args...) \
           ((x ? fprintf(stderr, "free by %s\n calloc by %s\n", __FUNCTION__, __FUNCTION___ : \
                   fprintf(stderr, "calloc by %s\n", __FUNCTION__)) ? realloc(x, args) : NULL)

이런 매크로를 사용한다면,
해당 함수에서 몇 번의 메모리 할당이 발생했고, 해제가 일어났는지, 화면상에 나타나는 문장을 보고 판단을 할 수 있을 것이다.
블로그 이미지

쩐의시대

나답게 살아가고 나답게 살아가자

,