다음을 통해 공유


_CrtMemDifference

두 메모리 상태 비교하고 차이점 (디버그 버전에만 해당)를 반환합니다.

int _CrtMemDifference( 
   _CrtMemState *stateDiff,
   const _CrtMemState *oldState,
   const _CrtMemState *newState 
);

매개 변수

  • stateDiff
    (반환된)두개의 메모리 상태 사이의 차이점을 저장하곤 하는 _CrtMemState 구조체에 대한 포인터.

  • oldState
    이전 상태로 메모리에 대한 포인터 (_CrtMemState 구조).

  • newState
    이후 메모리 상태에 대 한 포인터 (_CrtMemState 구조).

반환 값

메모리는 크게 다른 경우 _CrtMemDifference TRUE를 반환 합니다. 그렇지 않은 경우 FALSE를 반환합니다.

설명

_CrtMemDifference 함수는 oldState 및 newState 를 비교합니다. 그리고 그 차이를 stateDiff 에 저장합니다. 이는 메모리 누수 및 기타 메모리 문제를 감지하기 위한 응용 프로그램에 의해 사용할 수 있습니다. 이 _DEBUG 가 정의되어 있지 않으면 프로세싱중에 _CrtMemDifference 에 대한 호출을 제거 됩니다.

newState 및 oldState 는 _CrtMemState Crtdbg.h에 정의 된 구조체에 유효한 포인터 입니다. 이는 _CrtMemCheckpoint 에 의해 채워져 있습니다. _CrtMemDifference를 호출하기 전입니다. stateDiff 는 이전에 할당된 인스턴스에 대한 _CrtMemState 구조체의 포인터 이어야 합니다. stateDiff, newState, or oldState 가 NULL인경우, 매개 변수 유효성 검사.에 설명된 대로 잘못된 매개 변수 처리기가 호출됩니다. 계속해서 실행하도록 허용된 경우, 이러한 함수는 errno, _doserrno, _sys_errlist 및 _sys_nerr 를 EINVAL 로 설정하고 -1을 반환합니다.

_CrtMemDifference 비교는 _CrtMemState 필드 값에서 블록의 oldState 의 newState 의 결과를 stateDiff 에 저장합니다. 할당된 블럭 형식의 수나 또는 할당된 블럭의 전체수는 각각의 형식에 대하여 두 개의 메모리 상태 사이가 다를 경우, 상태는 상당히 달라질수 있다고 합니다. 이 stateDiff에 저장된 두 상태에 대하여, 전체 할당 사이의 차이와 두 개의 상태에 대하여 한번 할당된 거대한 금액 사이의 차이.

기본적으로 내부 C 런타임 블록 (_CRT_BLOCK) 메모리 상태 작업에 포함 되지 않습니다. 이 _CrtSetDbgFlag 함수는 _crtDbgFlag_CRTDBG_CHECK_CRT_DF 비트를 누수 탐지 및 다른 메모리 상태 작업에 대한 이러한 블럭을 포함시키기 위해 사용하곤 합니다. 해제된 메모리 블럭은 (_FREE_BLOCK) TRUE를 반환하는 것을 _CrtMemDifference 를 야기시키지 않습니다.

힙 상태 함수와 _CrtMemState 구조체에 대한 자세한 정보는 Heap State Reporting Functions 를 참조하십시오. 기본 힙의 디버그 버전에서 메모리 블록이 어떻게 할당되고 초기화되고 관리되는지에 대한 자세한 내용은 CRT 디버그 힙 정보 를 참조하십시오.

요구 사항

루틴

필수 헤더

선택적 헤더

_CrtMemDifference

<crtdbg.h>

<<errno.h>>

호환성에 대한 자세한 내용은 소개 단원의 호환성 부분을 참조하십시오.

라이브러리: CRT 라이브러리 기능 의 유일한 디버그 버전

예제

crt_dbg1를 참조하십시오.

해당 .NET Framework 항목

해당 사항 없음. 표준 C 함수를 호출하려면 PInvoke를 사용합니다. 자세한 내용은 플랫폼 호출 예제을 참조하십시오.

참고 항목

참조

디버그 루틴

_crtDbgFlag