방법: 디버그 힙 사용

이 항목은 다음 언어에 적용됩니다.

Edition

Visual Basic

C#

F#

C++

Web Developer

Express

항목이 적용되지 않음 항목이 적용되지 않음 항목이 적용되지 않음

네이티브 전용

항목이 적용되지 않음

Pro, Premium 및 Ultimate

항목이 적용되지 않음 항목이 적용되지 않음 항목이 적용되지 않음

네이티브 전용

항목이 적용되지 않음

malloc, free, calloc, realloc, new 및 delete 등의 힙 함수에 대한 모든 호출은 디버그 힙에서 작동하는 해당 함수의 디버그 버전으로 확인됩니다. 메모리 블록을 해제할 경우, 디버그 힙은 자동으로 할당 영역 양쪽에 있는 버퍼의 무결성을 확인하며 덮어쓰기가 발생하면 오류 보고서를 만듭니다.

디버그 힙을 사용하려면

  • C 런타임 라이브러리의 디버그 버전을 사용하여 응용 프로그램의 디버그 빌드를 연결합니다.

_crtDbgFlag 비트 필드를 하나 이상 변경하고 플래그에 새로운 상태를 만들려면

  1. 현재 _crtDbgFlag 상태를 가져오기 위해 newFlag 매개 변수를 _CRTDBG_REPORT_FLAG로 설정한 상태로 _CrtSetDbgFlag를 호출하고 반환된 값을 임시 변수에 저장합니다.

  2. 해당 비트 마스크(응용 프로그램 코드에 명시적 상수로 표시)로 임시 변수를 OR 연산(비트 | 기호)하여 모든 비트를 설정합니다.

  3. 알맞은 비트 마스크의 NOT 연산(비트 ~ 기호)으로 변수를 AND 연산(비트 & 기호)하여 나머지 비트를 해제합니다.

  4. _crtDbgFlag에 대해 새로운 상태를 만들기 위해 임시 변수로 저장한 값에 설정한 newFlag 매개 변수를 사용하여 _CrtSetDbgFlag를 호출합니다.

예제

예를 들어, 다음 코드의 줄에서는 자동 누수 탐지를 설정하고 _CRT_BLOCK 형식의 블록 확인을 해제합니다.

// Get current flag
int tmpFlag = _CrtSetDbgFlag( _CRTDBG_REPORT_FLAG );

// Turn on leak-checking bit.
tmpFlag |= _CRTDBG_LEAK_CHECK_DF;

// Turn off CRT block checking bit.
tmpFlag &= ~_CRTDBG_CHECK_CRT_DF;

// Set flag to the new value.
_CrtSetDbgFlag( tmpFlag );

참고 항목

기타 리소스

CRT 디버그 힙