在malloc钩子的文档中,“保存底层钩子”是什么意思?

时间:2011-07-13 18:21:05

标签: linux hook malloc

可以在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()函数提供了参考(或者像这样)?

提前致谢:)

1 个答案:

答案 0 :(得分:2)

这个想法是,一旦你的钩子被激活并且你的钩子函数有控制权,你就可以恢复任何现有的钩子并将调用向内恢复到一个真正的malloc()。

如果每个想要挂钩malloc的子系统都这样做,那么每个挂钩都会被激活,无论谁先进行设置或最后进行设置。