C - 将预定义函数作为指针传递

时间:2012-02-12 00:51:26

标签: c pointers

我正在使用一个Hashtable结构,它将键映射到值,其值为(void *),以便Hashtables可以保存任何类型的值。

为了能够释放这些值,Hashtable的解构函数将一个指向释放函数的指针作为参数。在我的情况下,我知道我将释放基本类型,如char *和int *。是否可以传入指向free()函数的指针,因为这可以处理基本类型?

这样的事情:

FreeHashTable(hashtable_name, free);

2 个答案:

答案 0 :(得分:2)

您可以(并且应该)将free返回的每个指针传递给malloc,无论它指向哪种类型(或结构)。小心传递给你没有从malloc获得的free指针。 (数组中间,局部变量等)

顺便说一下,除非你的某些数据类型在释放之前需要一些工作,否则你可以在没有传递函数指针的情况下完成它 - 只需调用free

答案 1 :(得分:0)

您无需将指针传递给函数。

只需遍历值并调用free即可。