티스토리 뷰
http://msdn.microsoft.com/ko-kr/library/e5ewb1h3
이 항목은 다음 언어에 적용됩니다.
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
네이티브 전용 |
|||
Standard |
네이티브 전용 |
|||
Pro 및 Team |
네이티브 전용 |
표의 범례:
해당 | |
해당 없음 | |
명령은 기본적으로 숨겨져 있습니다. |
메모리 누수를 탐지하는 데 사용하는 기본 도구는 디버거와 CRT(C 런타임 라이브러리) 디버그 힙 함수입니다. 디버그 힙 함수를 사용하려면 다음 문이 프로그램에 포함되어 있어야 합니다.
참고: |
---|
#include 문은 위의 순서를 따라야 합니다. 순서를 변경하면 함수를 사용해도 제대로 작동하지 않습니다. |
crtdbg.h를 포함하여, 메모리 할당과 할당 취소를 추적하는 해당 디버그 버전, _malloc_dbg 및 _free_dbg에 malloc 및 free 함수를 매핑합니다. 이 매핑은 _DEBUG가 정의된 디버그 빌드에서만 발생합니다. 릴리스 빌드에서는 일반적인 malloc 함수와 free 함수가 사용됩니다.
#define 문은 CRT 힙 함수의 기본 버전을 해당 디버그 버전에 매핑합니다. 이 문을 반드시 사용할 필요는 없지만 사용하지 않으면 메모리 누수 덤프에 별로 유용하지 않은 정보가 포함될 수 있습니다.
위에서 설명한 문을 추가한 후 프로그램에 다음 문을 포함하여 메모리 누수 정보를 덤프할 수 있습니다.
디버거에서 프로그램을 실행하면 _CrtDumpMemoryLeaks가 출력 창에 메모리 누수 정보를 표시합니다. 메모리 누수 정보가 다음과 같이 표시됩니다.
Detected memory leaks! Dumping objects -> C:\PROGRAM FILES\VISUAL STUDIO\MyProjects\leaktest\leaktest.cpp(20) : {18} normal block at 0x00780E80, 64 bytes long. Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD Object dump complete.
#define _CRTDBG_MAPALLOC 문을 사용하지 않으면 메모리 누수 덤프가 다음과 같이 표시됩니다.
Detected memory leaks! Dumping objects -> {18} normal block at 0x00780E80, 64 bytes long. Data: < > CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD CD Object dump complete.
_CRTDBG_MAP_ALLOC가 정의되지 않으면 다음 사항이 표시됩니다.
-
메모리 할당 번호(중괄호 안에 표시)
-
블록 형식(표준, 클라이언트 또는 CRT)
-
16진수로 표기한 메모리 위치
-
바이트로 표기한 블록 크기
-
16진수로 표기한 처음 16바이트의 내용
_CRTDBG_MAP_ALLOC가 정의되면 누수된 메모리가 할당된 파일을 찾을 수 있습니다. 파일 이름 뒤에 오는 괄호 안의 숫자(예: 20)는 파일에서의 줄 번호입니다.
메모리가 할당된 소스 파일의 줄로 이동하려면
-
출력 창에서 파일 이름과 줄 번호가 있는 줄을 두 번 클릭합니다.
- 또는 -
출력 창에서 파일 이름과 줄 번호가 있는 줄을 선택하고 F4 키를 누릅니다.
프로그램이 항상 동일한 위치에서 종료되는 경우에는 _CrtDumpMemoryLeaks를 쉽게 호출할 수 있습니다. 프로그램이 여러 위치에서 종료될 수 있는 경우에는 종료할 수 있는 모든 위치에서 _CrtDumpMemoryLeaks를 호출하는 대신 프로그램 시작 부분에 다음 호출을 포함할 수 있습니다.
이 문은 프로그램이 종료될 때 자동으로 _CrtDumpMemoryLeaks를 호출합니다. 위의 예제와 같이 비트 필드 _CRTDBG_ALLOC_MEM_DF와 _CRTDBG_LEAK_CHECK_DF를 모두 설정해야 합니다.
기본적으로 _CrtDumpMemoryLeaks는 위에서 설명한 대로 출력 창의 디버그 창으로 메모리 누수 정보를 덤프합니다. _CrtSetReportMode를 사용해 다른 위치로 덤프하도록 다시 설정할 수 있습니다. 라이브러리를 사용할 경우 출력을 다른 위치로 다시 설정할 수 있습니다. 이 경우 다음 문을 사용하여 출력 위치를 출력 창으로 다시 설정할 수 있습니다.
자세한 내용은 _CrtSetReportMode를 참조하십시오.
- Total
- Today
- Yesterday
- gettimeofday
- kde 전환
- 공돌/공순 애인님 관리법
- Java
- 윈도우 제거된 디바이스 드라이버
- 섹스와 남자들의 착각
- 수락계곡
- 코드 예시
- 정규식 Regex
- 대청호
- Signed applet
- 시동 안걸릴때 여자들은?
- 나는 아직 살아있는건가
- 랜 연결상태
- Java PermGen eclipse 이클립스 메모리 부족
- 놈놈놈
- 날자계산
- 자바스크립트
- Mista Swing
- 18-70mm
- spring-boot #java
- ckeditor5 #custom image file insert #uploads
- D200
- 멀티바이트 와이드 문자열 변경
- 대둔산
- 엑스포다리
- Don't let me be misunderstood
- 남자는 키
- Java Applet
- 2MB 개새끼
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |