4.13 __heapvalid()

stdlib.h で定義される __heapvalid() 関数は、ヒープの一貫性チェックを実行します。

verbose パラメータにゼロ以外の値が設定されている場合は、各未使用ブロックに関する詳細情報が出力され、それ以外の場合にはエラーが出力されます。
この関数は、出力関数 dprint() を呼び出すことによって結果を出力します。この出力関数は fprintf() と同じように機能する必要があります。dprint() に渡される最初のパラメータは、提供されているポインタ param です。fprintf() 自体を渡すこともできますが、その場合は正しい関数ポインタ型にキャストする必要があります。この型は便宜上 typedef として定義されています。これは、__heapprt と呼ばれます。以下に例を示します。
__heapvalid((__heapprt) fprintf, stderr, 0);

まだ出力を送信していないストリームで fprintf() を呼び出すと、ライブラリは内部で malloc() を呼び出して、そのストリーム用のバッファを作成します。この動作が __heapvalid() への呼び出し中に行われると、ヒープが破損することがあります。したがって、何らかの出力が stderr に送信されていることを確認する必要があります。ストリームへの書き込みが行われていない場合、コード例を実行すると失敗します。
この関数は C ライブラリ標準ではありませんが、ARM C ライブラリでは拡張としてサポートされています。

構文

int __heapvalid(int (*dprint)(void *param, char const *format,...), void *param, int verbose);
非機密扱いPDF file icon PDF 版ARM DUI0475KJ
Copyright © 2010-2014 ARM.All rights reserved.