你好说我有这个代码
typedef struct entry {
union {
struct A {
char *c;
} *A;
struct B {
char *c;
} *B;
} value;
} *TableEntry;
我正在做一个malloc用于输入,现在我想将一个字符串复制到结构A中的c。我是否必须为结构A分配内存,然后为c或第一个malloc分配表的所有内容?提前谢谢你
答案 0 :(得分:3)
你必须为他们两人分配内存
答案 1 :(得分:2)
分配TableEntry
时 - 为整个联合分配内存。其中的指针是分配的,但它们指的是 - 不是。因此,您应该为结构的c
成员和工会的A
/ B
成员分配值。
请注意,A
和B
共享相同的空间。
答案 2 :(得分:0)
为了澄清,需要三个分配,例如:
TableEntry *t = malloc(sizeof *t);
t->A = malloc(sizeof *t->A);
t->A->c = malloc(50);
但这种设计值得怀疑,因为无法告知A
或B
当前有效的内容。您必须有另一个索引或其他内容来跟踪此条目是A
还是B
。