使用malloc钩子的目的究竟是什么?我已经读过它用于内存分析等,但从未真正理解过。
答案 0 :(得分:6)
好吧,如果您可以查看分配函数的行为,那么您可以跟踪内存分配以进行性能分析和调试。
关于malloc挂钩的GCC文档a nice little example演示了每次调用分配函数时添加调试输出。
我不确定还有什么要告诉你的......这还不够理智吗?
答案 1 :(得分:1)
一个非常简单的例子:假设您知道由分配编号N(每次运行中的N相同)分配的内存总是泄露在您的代码中。你可以set a hook并在内部设置一个断点,条件是“分配数等于N”。一旦遇到该断点,您将检查调用堆栈并找出之后泄漏内存的原因。
答案 2 :(得分:1)
这是确保应用程序不会泄漏内存的简单方法。如果它必须在内存有限的环境中运行很长时间,这可能非常重要。您可以在测试时使用它,并在发行版中将其关闭。
答案 3 :(得分:0)
它们也可以用来完全取代分配器,例如使用umem或boehm-gc进行测试,或者因为它对特定应用程序更有效。