我在 c 中的 s 结构中有多个灵活的数组:
typedef struct
{
int a;
float b;
} Name;
typedef struct
{
int c;
int d;
int e;
} NIM;
typedef struct
{
int age;
int time;
Name name[1];
NIM nim[1];
} EthgenSig;
如果我们需要这样分配内存:
malloc(sizeof(EthgenSig) + sizeof(Name) * 10);
如何分配内存,如果我们先操作name
数组,然后再操作nim
数组,那么nim[1]
会覆盖name
数组,那怎么解决呢?
最佳答案
由于您指出的确切原因,您不能拥有超过一个灵活数组成员。
至多,如果你需要你的数据都保存在同一个内存块中,你可以制作name
和nim
指针并设置它们指向正确的位置分配后的位置(确保不破坏任何对齐约束),但最简单(也是最明智)的事情是分别为 name
和 nim
分配数组。
关于c - C中结构中的多个灵活数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17552312/