_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
하기 전에 입력한 구조체 _CrtMemCheckpoint
에 crtdbg.h
대한 유효한 포인터 _CrtMemState
여야 합니다. stateDiff
는 _CrtMemState
구조의 이전에 할당된 인스턴스에 대한 포인터여야 합니다. 매개 oldState
newState
NULL
변수 유효성 검사에 설명된 대로 잘못된 매개 변수 처리기가 호출되는 경우 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 런타임 라이브러리의 디버그 버전만 해당됩니다.