C освобождение строки внутри Союза - PullRequest
2 голосов
/ 07 апреля 2020

Скажем, у меня есть Союз


typedef union Union{
int firstField;
char * secondField;
}Union;

, и я размещаю этот союз в куче и выделяю secondField в куче. Как мне освободить второе поле?

1 Ответ

1 голос
/ 08 апреля 2020

Просто очевидным образом:

Union *up;
up = malloc(sizeof(Union));
up->secondField  = malloc(n);
// ...
free(up->secondField);
free(up);

Конечно, вы не должны назначать up->firstField между назначением и free из up->secondField. Таким образом, вы должны разработать свой код, чтобы гарантировать, что это не может произойти.

...