메모리 누수 확인하는 방법

mtak·2021년 1월 27일
1

42Seoul

목록 보기
11/13

메모리 누수 확인하는 방법

1. ASan(Address Sanitizer)

C/C++ 에 대한 메모리 오류 감지기
다음의 오류를 감지하고, 발견 즉시 프로그램 실행이 중지되고 오류 유형, 메모리 주소 및 오류가 발생한 원본 파일의 위치를 설명하는 메시지를 출력한다.

  • 해체 후 사용
  • 힘 버퍼 오버플로
  • 스택 버퍼 오버플로
  • 반환 후 사용
  • 범위지정 후 사용
  • 초기화 순서 버그

어떻게 쓰는지 간단하게 알아보자

  1. ft_printf 함수 어딘가에 오류를 매복시킨다.
...
    free(conv);
	conv->specifier = 'a';
  1. 메인문을 만든다.

    int main()
    {
        ft_printf("%s\n","cuz i`m cute");
        return (0);
    }
  2. Sanitizer flag 없이 컴파일 때린다.

    gcc -Wall -Wextra -Werror test.c

  3. 실행하면 자알 출력된다.
    cuz i'm cute

  4. 이번엔 sanitizer flag, -g flag 넣어서 컴파일 한다.
    gcc -Wall -Wextra -Werror -g3 -fsanitize=address test.c

2. Valgrind

3. leaks

profile
노는게 젤 조아. 친구들 모여라!!

1개의 댓글

comment-user-thumbnail
2021년 3월 8일

야생의 mtak님 발견~~ 구경 잘하고갑니다.

답글 달기