【发布时间】:2013-07-09 15:33:11
【问题描述】:
我在 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数组,那么如何解决呢?
【问题讨论】:
-
malloc() 只是分配所需大小的内存,不会将内存转换为任何类型。返回空指针。
-
我不知道你想问什么......但你的代码看起来完全合适。 name 和 nim 的大小已定义,因此整个 struct EthgenSig 也是如此。
-
您的
name和nim不是灵活的数组成员;它们只是单元素数组。请参阅comp.lang.c FAQ 的问题 2.6。