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 0349AC
Non-Confidential