C-结构的内存分配

C-结构的内存分配,c,memory-management,structure,C,Memory Management,Structure,假设我有以下结构定义:- struct structure { int a; int array[]; }one; 当数组大小未显示时,如何为上述结构分配内存?假设32位int和8位char,则一个的大小很可能4。也就是说,数组是一个空(零长度)数组。通常,您会使用灵活的数组成员动态分配结构: struct structure *two = malloc(sizeof *two + 32 * sizeof(int)); 这使得two成为指向结构的指针,该结构的数组字段中有

假设我有以下结构定义:-

struct structure
  {
   int a;
   int array[];
  }one;

当数组大小未显示时,如何为上述结构分配内存?

假设32位
int
和8位
char
,则一个
的大小很可能
4
。也就是说,
数组
是一个空(零长度)数组。通常,您会使用灵活的数组成员动态分配结构:

struct structure *two = malloc(sizeof *two + 32 * sizeof(int));
这使得
two
成为指向
结构的指针,该结构的
数组
字段中有32个元素。

+1,关于灵活数组的注意事项:C99§6.7.2.1-18,“……结构的大小就像灵活数组成员被省略一样,只是它可能具有比省略所暗示的更多的尾部填充。”