_C_TS_malloc_debug() — 使用されるテラスペース・メモリー量の判別 (オプションのダンプおよび検査を使用)

フォーマット

#include <mallocinfo.h>
int _C_TS_malloc_debug(unsigned int dump_level, unsigned int verify_level,
                       struct _C_mallinfo_t *output_record, size_t sizeofoutput);

言語レベル: Extended

スレッド・セーフ: はい。

説明

_C_TS_malloc_debug() 関数は、指定した output_record 構造体内で使用されるテラスペース・メモリーの量を判別し、その情報を戻します。 指定した dump_level パラメーターが 0 よりも大きい場合は、使用される内部メモリー構造体も stdout にダンプします。指定した verify_level パラメーターが 0 よりも大きい場合は、内部メモリー構造体に対する検査確認も行います。 検査が失敗すると、失敗を示すメッセージが stdout に生成されます。dump_level と verify_level の両方のパラメーターが 0 の場合、この関数は _C_TS_malloc_info 関数と同じ振る舞いをします。

次のマクロは、dump_level パラメーターに指定される <mallocinfo.h> インクルード・ファイル内で定義されます。

_C_NO_DUMPS ダンプされる情報はありません
_C_DUMP_TOTALS 全体の合計および各チャンクの合計が出力されます
_C_DUMP_CHUNKS 各チャンクについての追加情報が出力されます
_C_DUMP_NODES 各チャンク内のすべてのノードの追加情報が出力されます
_C_DUMP_TREE 空きノードを追跡するために使用されるデカルト・ツリーの追加情報が出力されます
_C_DUMP_ALL 使用可能なすべての情報が出力されます

次のマクロは、verify_level パラメーターに指定される <mallocinfo.h> インクルード・ファイル内で定義されます。

_C_NO_CHECKS 検査確認は実行されません
_C_CHECK_TOTALS 合計が正確であるかどうかが検査されます
_C_CHECK_CHUNKS 各チャンクについて追加検査が実行されます
_C_CHECK_NODES 各チャンク内のすべてのノードについて追加検査が実行されます。
_C_CHECK_TREE 空きノードを追跡するために使用されるデカルト・ツリーの追加検査が実行されます。
_C_CHECK_ALL すべての検査が実行されます
_C_CHECK_ALL_AND_ABORT すべての検査が実行され、いずれかの検査が失敗すると、abort() 関数が呼び出されます。

注:
この関数は、アプリケーション内のテラスペース・メモリー使用量の詳細デバッグ用です。

戻り値

正常に実行された場合、この関数は 0 を戻します。エラーが発生した場合、関数は負の値を戻します。

_C_TS_malloc_debug() の使用例

この例は、_C_TS_malloc_debug() から戻された情報を stdout に出力します。このプログラムは TERASPACE(*YES *TSIFC) でコンパイルされます。

#include <stdio.h>
#include <stdlib.h>
#include <mallocinfo.h>
 
int main (void)
{
   _C_mallinfo_t info;
   int           rc;
   void         *m;

   /* Allocate a small chunk of memory */
   m = malloc(500);

   rc = _C_TS_malloc_debug(_C_DUMP_TOTALS,
                           _C_NO_CHECKS,
                           &info, sizeof(info));

   if (rc == 0) {
      Printf("_C_TS_malloc_debug successful¥n");
   }
   else {
      printf("_C_TS_malloc_debug failed (rc = %d)¥n", rc);
   }

   free(m);
}

/****************************************************
  The output should be similar to:

     total_bytes        = 524288
     allocated_bytes    = 688
     unallocated_bytes  = 523600
     allocated_blocks   = 1
     unallocated_blocks = 1
     requested_bytes    = 500
     pad_bytes          = 12
     overhead_bytes     = 176
   Number of memory chunks  = 1
   Total bytes              = 524288
   Total allocated bytes    = 688
   Total unallocated bytes  = 523600
   Total allocated blocks   = 1
   Total unallocated blocks = 1
   Total requested bytes    = 500
   Total pad bytes          = 12
   Total overhead bytes     = 176
   _C_TS_malloc_debug successful
 ****************************************************

関連情報



[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]