다음을 통해 공유


_CrtMemDifference

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

구문

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

매개 변수

stateDiff
반환된 두 메모리 상태의 차이점을 저장하는 데 사용되는 _CrtMemState 구조에 대한 포인터입니다.

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

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

반환 값

메모리 상태의 차이가 중요한 경우 .를 _CrtMemDifference 반환합니다 TRUE. 그렇지 않으면 FALSE를 반환합니다.

설명

이 함수는 _CrtMemDifference 앱에서 stateDiff메모리 누수 및 newState 기타 메모리 문제를 감지하는 데 사용할 수 있는 차이점을 비교 oldState 하고 저장합니다. _DEBUG가 정의되지 않은 경우 전처리 중에 _CrtMemDifference에 대한 호출이 제거됩니다.

newState각각 oldState 은 호출_CrtMemDifference하기 전에 입력한 구조체 _CrtMemCheckpointcrtdbg.h대한 유효한 포인터 _CrtMemState 여야 합니다. stateDiff_CrtMemState 구조의 이전에 할당된 인스턴스에 대한 포인터여야 합니다. 매개 oldState newStateNULL변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출되는 경우 stateDiff 실행을 계속할 수 있으면 , , _doserrno_sys_errlist_sys_nerr 로 설정 EINVAL 되고 함수가 반환됩니다FALSE.errno

_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>

호환성에 대한 자세한 내용은 호환성을 참조하세요.

라이브러리: C 런타임 라이브러리의 디버그 버전만 해당됩니다.

참고 항목

디버그 루틴
_crtDbgFlag