你需要在C中的结构中为函数指针分配malloc空间吗



例如,我必须在一个函数中创建一个具有参数的结构:一个格式为void(*func)(void*)的函数指针和一个int id。

要创建的结构如下:

typedef struct example {
    int id;
    void (*func)(void *);
} Example;

现在我的问题是,当我为整个结构分配malloc空间时,我是否也为void函数指针分配malloc空间,因为它是一个指针?如果是的话,既然我不能得到一个空指针的大小,怎么办?谢谢

当为结构分配malloc空间时,sizeof(your_struct)会获得整个结构的大小。您不需要为每个元素单独分配空间。在mallocing之后,您可以像结构的任何其他字段一样设置函数指针。

您不需要malloc空间。

在32位pc上,sizeof(指针)==4。

你可以测试

sizeof(struct example) == 8
sizeof(int) == 4

您不需要为要指向的函数分配内存。它已经存在并占用空间;它是在编译程序时分配的,并且您没有显式管理它。您只需获取它的地址并将其分配给指针即可。

关于指针本身的内存,当您为它所属的结构分配内存时,将提供它。计算sizeof struct example时,会考虑int和函数指针的大小,以及为正确对齐而添加的任何填充位。将这样的大小传递给malloc将确保您有足够的内存用于整个结构,包括指针。

相关内容

  • 没有找到相关文章

最新更新