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

Do I need to deallocate a pointer to a function?

本文关键字:函数 指针 释放 是否      更新时间:2023-10-16

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

struct Person
{
    void (*action) ();
}
void action()
{
    printf("Action has been calledn");
}
int main()
{
    Person p;
    p->action = &action;
    // My question is whether or not I need to do this
    // free (p->action);
    // p->action = NULL;
}

谢谢。

我有一个函数指针。我使用它一段时间了,但我不知道我是否需要显式释放指针。

不。你不需要使用 free() 来释放任何东西,你从来没有用malloc()或类似的东西动态分配过。


事实上,使用 malloc() 创建函数指针几乎是不可能的。

我不知道我是否需要显式释放指针。

您的action变量只是一个指针。 你不会释放指针本身,而是释放它所指向的内容。 但是,由于没有为所指向的函数分配内存,因此您不负责释放它。