取消引用功能指针以交换功能

时间:2014-11-21 13:16:39

标签: c++ c pointers function-pointers

我尝试重新定义malloc()以便在不修改代码的情况下使用自定义分配器。为什么以下代码不起作用?使用#define是唯一的左解决方案吗?

void *(*malloc_ptr)(size_t) = malloc;
*malloc_ptr = my_malloc;

2 个答案:

答案 0 :(得分:3)

为了可靠地替换内存分配库,请使用LD_PRELOAD并将其自己的malloc和free实现传递给它。

显然,你可以创建一个名为malloc_ptr的变量,并在所有函数中使用它,但要注意其他库函数将调用标准malloc

答案 1 :(得分:2)

函数指示符没有赋值运算符。

如果要将一个函数指针指定给另一个函数指针,则应编写

malloc_ptr = my_malloc;