可以在http://www.gnu.org/s/hello/manual/libc/Hooks-for-Malloc.html找到malloc挂钩的文档。
实现malloc()
和free()
的钩子函数时,必须保存底层钩子。
/* Save underlying hooks */
old_malloc_hook = __malloc_hook;
old_free_hook = __free_hook;
我理解malloc钩子但不是这部分。为什么old_malloc_hook
再次设置。我认为它给原始malloc()
函数提供了参考(或者像这样)?
提前致谢:)
答案 0 :(得分:2)
这个想法是,一旦你的钩子被激活并且你的钩子函数有控制权,你就可以恢复任何现有的钩子并将调用向内恢复到一个真正的malloc()。
如果每个想要挂钩malloc的子系统都这样做,那么每个挂钩都会被激活,无论谁先进行设置或最后进行设置。