次の方法で共有


_heapset

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

重要

この関数は廃止されています。 Visual Studio 2015 以降、CRT で使用できません。

構文

int _heapset(
   unsigned int fill
);

パラメーター

fill
充填文字。

戻り値

_heapset は、Malloc.h に定義されている次の整数のマニフェスト定数のいずれかを返します。

説明
_HEAPBADBEGIN 初期ヘッダー情報が無効または見つかりません。
_HEAPBADNODE ヒープが破損しているか、不適切なノードが見つかりました。
_HEAPEMPTY ヒープが初期化されていません。
_HEAPOK ヒープは一貫性があると思われます。

また、エラーが発生した場合、 _heapseterrnoENOSYSに設定します。

解説

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

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

要件

ルーチンによって返される値 必須ヘッダー オプション ヘッダー
_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

関連項目

メモリ割り当て
_heapadd
_heapchk
_heapmin
_heapwalk