我是否需要释放指向函数的指针?

时间:2016-05-27 01:45:45

标签: c++ c

对于我写的一些代码,我有一个函数指针。我使用它已经有一段时间了,但我不知道是否需要显式释放指针。这是我的代码的简化版本

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;
}

谢谢。

2 个答案:

答案 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 变量只是一个指针。你不会释放指针本身,你释放它所指向的东西。但由于没有为指向的函数分配内存,因此您不负责释放它。