所以说我有一个Union
typedef union Union{
int firstField;
char * secondField;
}Union;
我在堆上分配这个并集,在堆上配置secondField。如何释放secondField?
显而易见:
Union *up;
up = malloc(sizeof(Union));
up->secondField = malloc(n);
// ...
free(up->secondField);
free(up);
当然,您不能在up->secondField
的赋值和free
之间为up->firstField
赋值。因此,您必须设计代码以确保这种情况不会发生。