다음을 통해 공유


힙 상태 보고 함수

업데이트: 2007년 11월

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

Edition

Visual Basic

C#

C++

Web Developer

Express

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

네이티브 전용

항목이 적용되지 않음

Standard

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

네이티브 전용

항목이 적용되지 않음

Pro 및 Team

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

네이티브 전용

항목이 적용되지 않음

표의 범례:

항목이 적용됨

해당

항목이 적용되지 않음

해당 없음

항목이 적용되지만 명령은 기본적으로 숨겨짐

명령은 기본적으로 숨겨져 있습니다.

몇몇 함수는 지정한 순간에 디버그 힙의 내용을 보고합니다.

_CrtMemState

지정한 순간에 힙 상태의 요약 스냅숏을 캡처하려면 CRTDBG.H에 정의된 _CrtMemState 구조체를 사용하십시오.

typedef struct _CrtMemState
{
    // Pointer to the most recently allocated block:
    struct _CrtMemBlockHeader * pBlockHeader;
    // A counter for each of the 5 types of block:
    size_t lCounts[_MAX_BLOCKS];
    // Total bytes allocated in each block type:
    size_t lSizes[_MAX_BLOCKS];
    // The most bytes allocated at a time up to now:
    size_t lHighWaterCount;
    // The total bytes allocated at present:
    size_t lTotalCount;
} _CrtMemState;

이 구조체는 가장 최근에 할당된 첫 번째 블록에 대한 포인터를 디버그 힙의 연결 리스트에 저장합니다. 그런 다음 두 배열에서 목록에 있는 _NORMAL_BLOCK, _CLIENT_BLOCK, _FREE_BLOCK 등의 각 메모리 블록 형식의 개수와 각 블록 형식에 할당된 바이트 수를 기록합니다. 마지막으로 해당 포인트까지 전체적으로 힙에서 할당된 가장 큰 바이트 수와 현재 할당된 바이트 수를 기록합니다.

기타 CRT 보고 함수

다음 함수는 힙의 상태와 내용을 보고하며 그 정보를 사용하여 메모리 누수 등의 문제를 탐지합니다.

함수

설명

_CrtMemCheckpoint

힙의 스냅숏을 응용 프로그램의 _CrtMemState 구조체에 저장합니다.

_CrtMemDifference

두 메모리 상태 구조체를 비교하고 세 번째 상태 구조체에 그 차이를 저장하며, 두 상태가 다른 경우 TRUE를 반환합니다.

_CrtMemDumpStatistics

지정한 _CrtMemState 구조체를 덤프합니다. 구조체에는 지정한 순간의 디버그 힙 상태 스냅숏이나 두 스냅숏의 차이점이 포함될 수 있습니다.

_CrtMemDumpAllObjectsSince

지정한 스냅숏이 힙의 스냅숏이거나 실행을 시작할 때 만들어진 스냅숏이기 때문에 할당된 모든 개체 정보를 덤프합니다. _CrtSetDumpClient를 사용하여 _CLIENT_BLOCK 블록을 설치한 경우, 이 블록을 덤프할 때마다 응용 프로그램의 후크 함수를 호출합니다.

_CrtDumpMemoryLeaks

프로그램 실행을 시작한 이후로 메모리 누수가 발생했는지 확인하고, 메모리 누수를 탐지한 경우 할당된 개체를 모두 덤프합니다. _CrtSetDumpClient를 사용하여 _CLIENT_BLOCK 블록을 설치한 경우, _CrtDumpMemoryLeaks에서 이 블록을 덤프할 때마다 응용 프로그램의 후크 함수를 호출합니다.

참고 항목

기타 리소스

CRT 디버그 힙