2.16.15. __heapvalid()

__heapvalid() 関数は、ヒープの一貫性チェックを実行します。 verbose パラメータにゼロ以外の値が設定されている場合は、各未使用ブロックに関する詳細情報が出力され、 それ以外の場合にはエラーが出力されます。

この関数は、出力関数 dprint を呼び出すことによって結果を出力します。この出力関数は fprintf() と同じように機能する必要があります。 dprint に渡される最初のパラメータは、提供されているポインタ param です。 fprintf() 自体を渡すこともできますが、その場合は正しい関数ポインタ型にキャストする必要があります。 この型は便宜上 typedef として定義されています。 これを __heapprt と呼びます。 以下に例を示します。

Example 2.26. fprintf() による __heapvalid() の呼び出し

__heapvalid((__heapprt) fprintf, stderr, 0);

Note

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

この関数は、ARM ライブラリに固有の拡張です。

構文

int __heapvalid(int (*dprint)( void *param, char const *format,...), void* param, int verbose);

Copyright © 2007 ARM Limited. All rights reserved.ARM DUI 0349AJ
Non-Confidential