首页 文章

在C中的结构中,是否需要malloc空间用于函数指针?

提问于
浏览
3

例如,我必须在函数中使用以下参数创建结构:一个函数指针,格式为:void(* func)(void *)和一个int id .

要创建的结构如下:

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

现在我的问题是当我为整个结构我的malloc空间时,我是否也为void函数指针的malloc空间,因为它是一个指针?如果是这样,怎么样,因为我无法获得无效指针的大小?谢谢 .

3 回答

  • 5

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

  • 3

    你不需要malloc空间 .

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

    你可以测试一下

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

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

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

相关问题