我正在编写一个用于运行时内存问题调试的开源工具:
https://github.com/sandeepsinghmails/S_malloc
当前版本要求用户更改他/她的 malloc()
和 free()
包装函数,并从我的库中调用两个附加函数。
我想修改这段代码,以便用户的 malloc()
和 free()
调用自动映射到我自己的实现。用户不需要修改他的源代码(Valgrind 提供的东西)。
有人可以指导我吗?
最佳答案
看看 malloc_hooks:
http://man7.org/linux/man-pages/man3/malloc_hook.3.html
GNU C 库允许您修改 malloc(3)、realloc(3)、 和 free(3) 通过指定适当的钩子(Hook)函数。你可以使用这些 钩子(Hook)来帮助你调试使用动态内存分配的程序,例如 示例。
关于将 malloc() 调用转换为 C 中的外部库调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13917339/