malloc钩子的目的是什么?

时间:2011-05-05 11:22:07

标签: c++ c malloc

使用malloc钩子的目的究竟是什么?我已经读过它用于内存分析等,但从未真正理解过。

4 个答案:

答案 0 :(得分:6)

好吧,如果您可以查看分配函数的行为,那么您可以跟踪内存分配以进行性能分析和调试。

关于malloc挂钩的GCC文档a nice little example演示了每次调用分配函数时添加调试输出。

我不确定还有什么要告诉你的......这还不够理智吗?

答案 1 :(得分:1)

一个非常简单的例子:假设您知道由分配编号N(每次运行中的N相同)分配的内存总是泄露在您的代码中。你可以set a hook并在内部设置一个断点,条件是“分配数等于N”。一旦遇到该断点,您将检查调用堆栈并找出之后泄漏内存的原因。

答案 2 :(得分:1)

这是确保应用程序不会泄漏内存的简单方法。如果它必须在内存有限的环境中运行很长时间,这可能非常重要。您可以在测试时使用它,并在发行版中将其关闭。

答案 3 :(得分:0)

它们也可以用来完全取代分配器,例如使用umem或boehm-gc进行测试,或者因为它对特定应用程序更有效。