_heapchk
힙에서 일관성 확인을 실행합니다.
구문
int _heapchk( void );
반환 값
_heapchk
는 Malloc.h에 정의된 다음 정수 매니페스트 상수 중 하나를 반환합니다.
반환 값 | 조건 |
---|---|
_HEAPBADBEGIN |
초기 헤더 정보가 잘못되었거나 찾을 수 없습니다. |
_HEAPBADNODE |
잘못된 노드가 검색되었거나 힙이 손상되었습니다. |
_HEAPBADPTR |
힙에 대한 포인터가 잘못되었습니다. |
_HEAPEMPTY |
힙이 초기화되지 않았습니다. |
_HEAPOK |
힙이 일치하는 것 같습니다. |
또한 오류가 발생하는 경우 _heapchk
는 errno
를 ENOSYS
로 설정합니다.
설명
_heapchk
함수를 통해 힙의 최소 일관성을 확인하여 힙 관련 문제를 디버그할 수 있습니다. 운영 체제가 지원하지 _heapchk
않는 경우(예: Windows 98) 함수가 반환 _HEAPOK
되고 설정 errno
됩니다 ENOSYS
.
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 이 동작을 변경하려면 CRT 전역 상태를 참조하세요.
요구 사항
루틴에서 반환된 값 | 필수 헤더 | 선택적 헤더 |
---|---|---|
_heapchk |
<malloc.h> | <errno.h> |
호환성에 대한 자세한 내용은 호환성을 참조하세요.
예시
// crt_heapchk.c
// This program checks the heap for
// consistency and prints an appropriate message.
#include <malloc.h>
#include <stdio.h>
int main( void )
{
int heapstatus;
char *buffer;
// Allocate and deallocate some memory
if( (buffer = (char *)malloc( 100 )) != NULL )
free( buffer );
// Check heap status
heapstatus = _heapchk();
switch( heapstatus )
{
case _HEAPOK:
printf(" OK - heap is fine\n" );
break;
case _HEAPEMPTY:
printf(" OK - heap is empty\n" );
break;
case _HEAPBADBEGIN:
printf( "ERROR - bad start of heap\n" );
break;
case _HEAPBADNODE:
printf( "ERROR - bad node in heap\n" );
break;
}
}
OK - heap is fine