마음의 안정을 찾기 위하여 - 프로그램의 메모리 누수(Memory Leak) 체크
2101980
542
588
관리자새글쓰기
태그위치로그방명록
별일없다의 생각
dawnsea's me2day/2010
색상(RGB)코드 추출기(Color...
Connection Generator/2010
최승호PD, '4대강 거짓말 검...
Green Monkey**/2010
Syng의 생각
syng's me2DAY/2010
천재 작곡가 윤일상이 기획,...
엘븐킹's Digital Factory/2010
프로그램의 메모리 누수(Memory Leak) 체크
리눅스/리눅스 프로그래밍 | 2008/09/10 11:25

리눅스 프로그램에서의 메모리 누수 체크를 위한 방법에 대해 알아보자.

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char *str = (char*) malloc(1024);
    printf("flsdkjfslkjfsdklfj\n\n\n");
    printf("\n\n");
    return 0;
}

컴파일( -g 옵션을 넣어야 파일과 라인을 알수 있다. 그리고 -o옵션보다 먼저 써줘야 한다.)
gcc -g -o test test.c

valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./test

하면

==17708==
==17708== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 11 from 1)
==17708== malloc/free: in use at exit: 1,024 bytes in 1 blocks.
==17708== malloc/free: 1 allocs, 0 frees, 1,024 bytes allocated.
==17708== For counts of detected errors, rerun with: -v
==17708== searching for pointers to 1 not-freed blocks.
==17708== checked 59,020 bytes.
==17708==
==17708== 1,024 bytes in 1 blocks are definitely lost in loss record 1 of 1
==17708==    at 0x4021620: malloc (vg_replace_malloc.c:149)
==17708==    by 0x80483D0: main (test.c:6)
==17708==
==17708== LEAK SUMMARY:
==17708==    definitely lost: 1,024 bytes in 1 blocks.
==17708==      possibly lost: 0 bytes in 0 blocks.
==17708==    still reachable: 0 bytes in 0 blocks.
==17708==         suppressed: 0 bytes in 0 blocks.


출력내용중 빨간색부분이 Memory 누수가 발생한 부분이다.
소스파일 test.c의 여섯번째 라인에서 메모리 누수가 발생하였다는 것이고, 하나의 블록에서 총 1,024byte의 누수가 발생하였음을 알 수 있다.

출력내용을 파일에 저장하고자 할 경우에는 "--log-file"옵션을 사용한다.

valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --log-file="./valgrind_log" ./test

Home-Page : http://valgrind.org/ 
Manual : http://valgrind.org/docs/manual/manual.html 
Download : http://valgrind.org/docs/download_docs.html


1. Valgrind 설치

wget http://www.valgrind.org/downloads/valgrind-3.3.0.tar.bz2
tar xvfj valgrind-3.3.0.tar.bz2
cd valgrind-3.3.0
./configure
make
make install

2. Valgrind 테스트
valgrind --leak-check=yes main

3. 간단 실행법
valgrind --tool=memcheck --leak-check=full [프로그램] [실행인자들...]

2008/09/10 11:25 2008/09/10 11:25
Article tag list Go to top
View Comment 2
Trackback URL :: 이 글에는 트랙백을 보낼 수 없습니다
From. 명이 2008/09/10 12:06
답글달기삭제
@_@

오늘은 인사차 들렸어요~ 아침에 열심히 포스팅하는것보다 소소한 인사도 괜찮겠다는 생각에^^
역시..프로그램에 관련된 내용은 봐도봐도 그저 보기만...ㅎㅎ

날씨가 무척 덥죠? 이런 날씨라고 방심하시면 안되요~
일교차 클때가 추울때보다 감기에 더 잘걸린답니다. 건강 조심, 또 조심하세요~
즐거운 하루 되시고요^*^
From. 구차니 2008/11/18 10:41
답글달기삭제
It runs on the following platforms: X86/Linux, AMD64/Linux, PPC32/Linux, PPC64/Linux.
ㅠ.ㅠ 다른 플랫폼에도 적용이 가능하면 좋겠어요
PREV : [1] : NEXT
 
 
 
 
: [1] ... [483][484][485][486][487][488][489][490][491] ... [862] :
«   2023/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28        
전체 (862)
출판 준비 (0)
My-Pro... (41)
사는 ... (492)
블로그... (22)
My Lib... (32)
게임 ... (23)
개발관... (3)
Smart ... (1)
Delphi (75)
C Builder (0)
Object... (0)
VC, MF... (9)
Window... (1)
Open API (3)
Visual... (0)
Java, JSP (2)
ASP.NET (0)
PHP (4)
Database (12)
리눅스 (28)
Windows (23)
Device... (1)
Embedded (1)
게임 ... (0)
Web Se... (2)
Web, S... (19)
잡다한... (5)
프로젝트 (0)
Personal (0)
대통령... (9)
Link (2)