_CrtIsMemoryBlock
지정된 메모리 블록이 로컬 힙 내에 있고 유효한 디버그 힙 블록 형식 식별자를 포함하는지 확인합니다(디버그 버전에만 해당).
구문
int _CrtIsMemoryBlock(
const void *userData,
unsigned int size,
long *requestNumber,
char **filename,
int *lineNumber
);
매개 변수
userData
확인할 메모리 블록의 시작 부분에 대한 포인터입니다.
size
지정된 블록의 크기(바이트)입니다.
requestNumber
블록의 할당 번호 또는 NULL
에 대한 포인터입니다.
filename
블록을 요청한 소스 파일의 이름 또는 NULL
에 대한 포인터입니다.
lineNumber
소스 파일의 줄 번호 또는 NULL
에 대한 포인터입니다.
반환 값
지정된 메모리 블록이 로컬 힙 내에 있고 유효한 디버그 힙 블록 형식 식별자를 포함하는 경우 _CrtIsMemoryBlock
이 TRUE
를 반환하며, 그렇지 않으면 FALSE
를 반환합니다.
설명
_CrtIsMemoryBlock
함수는 지정된 메모리 블록이 애플리케이션의 로컬 힙 내에 있고 유효한 블록 형식 식별자를 포함하는지 확인합니다. 또한 이 함수는 메모리 블록 할당이 원래 요청된 경우 개체 할당 순서 번호 및 소스 파일 이름/줄 번호를 가져오는 데도 사용할 수 있습니다. 또는 매개 변수에 lineNumber
requestNumber
filename
전달된 값이 아니면NULL
로컬 힙에서 블록을 찾으면 메모리 블록의 디버그 헤더에 있는 값으로 매개 변수 _CrtIsMemoryBlock
를 설정합니다. _DEBUG
가 정의되지 않은 경우 전처리 중에 _CrtIsMemoryBlock
에 대한 호출이 제거됩니다.
실패하면 _CrtIsMemoryBlock
반환되고 출력 매개 변수는 기본값 requestNumber
으로 초기화되고 lineNumber
0으로 설정되고 filename
NULL
.FALSE
이 함수는 반환 TRUE
되거나 FALSE
매크로 중 _ASSERT
하나에 전달되어 기본 디버깅 오류 처리 메커니즘을 만들 수 있습니다. 다음 예제에서는 지정된 주소가 로컬 힙 내에 없으면 어설션 오류가 발생합니다.
_ASSERTE( _CrtIsMemoryBlock( userData, size, &requestNumber,
&filename, &linenumber ) );
다른 디버그 함수 및 매크로와 함께 사용할 수 있는 방법에 _CrtIsMemoryBlock
대한 자세한 내용은 보고용 매크로를 참조하세요. 기본 힙의 디버그 버전에서 메모리 블록을 할당, 초기화 및 관리하는 방법에 대한 자세한 내용은 CRT 디버그 힙 세부 정보를 참조 하세요.
요구 사항
루틴에서 반환된 값 | 필수 헤더 |
---|---|
_CrtIsMemoryBlock |
<crtdbg.h> |
호환성에 대한 자세한 내용은 호환성을 참조하세요.
라이브러리
C 런타임 라이브러리의 디버그 버전만 해당됩니다.
예시
문서의 예제를 참조하세요 _CrtIsValidHeapPointer
.