Share via


_heapchk

更新 : 2007 年 11 月

ヒープの一貫性チェックを実行します。

int _heapchk( void );

戻り値

_heapchk は、Malloc.h で定義されている次の記号定数のいずれかを整数で返します。

  • _HEAPBADBEGIN
    初期のヘッダー情報が不正か、または見つかりません。

  • _HEAPBADNODE
    見つかったノードが不正か、ヒープに不正な部分があります。

  • _HEAPBADPTR
    ヒープへのポインタが無効です。

  • _HEAPEMPTY
    ヒープが初期化されていません。

  • _HEAPOK
    ヒープに一貫性があります。

さらに、エラーが発生すると、_heapchk は errno に ENOSYS を設定します。

解説

_heapchk 関数は、ヒープの最小限の一貫性をチェックし、ヒープ関連の問題のデバッグに役立ちます。オペレーティング システムが _heapchk をサポートしない場合 (Windows 98 など)、この関数は _HEAPOK を返し、errno を ENOSYS に設定します。

必要条件

ルーチン

必須ヘッダー

オプション ヘッダー

_heapchk

<malloc.h>

<errno.h>

互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。

使用例

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

.NET Framework の相当するアイテム

適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

参照

メモリ割り当て

_heapadd

_heapmin

_heapset

_heapwalk