对于我写的一些代码,我有一个函数指针。我使用它已经有一段时间了,但我不知道是否需要显式释放指针。这是我的代码的简化版本
struct Person
{
void (*action) ();
}
void action()
{
printf("Action has been called\n");
}
int main()
{
Person p;
p->action = &action;
// My question is whether or not I need to do this
// free (p->action);
// p->action = NULL;
}
谢谢。
答案 0 :(得分:7)
我有一个函数指针。我用了一段时间,但我不知道是否需要显式释放指针。
否。您不需要使用free()
解除分配任何内容,您从未动态分配malloc()
或类似内容。
实际上,使用malloc()
创建函数指针实际上是不可能的。
答案 1 :(得分:2)
我不知道是否需要显式释放指针。
您的S(1000) - T(1000)
S(N) - T(N)
T(N) <= S(N)* T(1000)/S(1000) for all N >=1000
S(1000) approx 10E4
T(1000) = 8
T(N) <= N(log N)^2 * 8 / 10E4
变量只是一个指针。你不会释放指针本身,你释放它所指向的东西。但由于没有为指向的函数分配内存,因此您不负责释放它。