我正在分配一个带有函数指针的结构。显然,我必须在程序结束时释放该结构。但是,释放函数指针会导致未定义的行为。我该怎么做呢?我试图创建一个指向函数点的指针,但它不起作用,对吧?附上一个最小的例子。
#include <stdlib.h>
#include <stdio.h>
int le_double(void *a, void *b){return *(double *)a < *(double *)b;}
typedef struct example
{
double* data;
int (*le_fun)(void *, void *);
} Example;
Example* ExampleNew(int nItems)
{
int size = sizeof(Example) + nItems * sizeof(double);
Example* e = malloc(size);
e->data = (double *) (e + 1);
e->le_fun = le_double;
return e;
}
void test(int nItems)
{
Example* e = ExampleNew(nItems);
free(e);
}
int main()
{
int nItems = 5;
test(nItems);
}
你什么都不用做。
函数指针只是保存在结构内部的一个值,因此当您
free()
分配时它会被释放。