次の方法で共有


_heapset

更新 : 2007 年 11 月

ヒープの最小限の一貫性をチェックし、空のエントリに指定された値を設定します。

int _heapset( 
   unsigned int fill 
);

パラメータ

  • fill
    フィル キャラクタ。

戻り値

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

  • _HEAPBADBEGIN
    初期のヘッダー情報が無効か、見つかりません。

  • _HEAPBADNODE
    ヒープが破損しているか、見つかったノードが不正です。

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

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

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

解説

_heapset 関数は、空きメモリの位置または誤って上書きされたノードを示します。

_heapset はヒープの最小限の一貫性をチェックし、ヒープの空きエントリの各バイトに fill 値を設定します。メモリ内の fill 値を調べると、空きノードのヒープの場所と、解放されたメモリに誤って書き込まれたデータのヒープの場所がわかります。オペレーティング システムが _heapset をサポートしていない場合 (Windows 98 など)、この関数は _HEAPOK を返し、errno を ENOSYS に設定します。

必要条件

ルーチン

必須ヘッダー

オプション ヘッダー

_heapset

<malloc.h>

<errno.h>

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

使用例

// crt_heapset.c
// This program checks the heap and
// fills in free entries with the character 'Z'.
 

#include <malloc.h>
#include <stdio.h>
#include <stdlib.h>

int main( void )
{
   int heapstatus;
   char *buffer;

   if( (buffer = malloc( 1 )) == NULL ) // Make sure heap is 
      exit( 0 );                        //    initialized     
   heapstatus = _heapset( 'Z' );        // Fill in free entries 
   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;
   }
   free( buffer );
}

OK - heap is fine

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

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

参照

参照

メモリ割り当て

_heapadd

_heapchk

_heapmin

_heapwalk