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