我尝试重新定义malloc()
以便在不修改代码的情况下使用自定义分配器。为什么以下代码不起作用?使用#define
是唯一的左解决方案吗?
void *(*malloc_ptr)(size_t) = malloc;
*malloc_ptr = my_malloc;
答案 0 :(得分:3)
为了可靠地替换内存分配库,请使用LD_PRELOAD并将其自己的malloc和free实现传递给它。
显然,你可以创建一个名为malloc_ptr
的变量,并在所有函数中使用它,但要注意其他库函数将调用标准malloc
。
答案 1 :(得分:2)
函数指示符没有赋值运算符。
如果要将一个函数指针指定给另一个函数指针,则应编写
malloc_ptr = my_malloc;