Будет.free
принимает указатель void
и освобождает все, что вы говорите, бесплатно.Поскольку это C, деструкторам не о чем беспокоиться, в отличие от C ++
. Обратите внимание, что это работает только потому, что Dairy
объявлено первым в вашей "унаследованной" структуре.Если вы измените порядок объявления, он больше не будет работать.
Редактировать: Если подумать, вы не можете на это полагаться.Вы понятия не имеете, что может произойти волшебство компилятора и какая упаковка может сместить элемент Dairy
в вашей структуре.Возможно, это сработает, но я не уверен, что вы гарантированно будете работать всегда.
Можно с уверенностью сказать, что это плохая практика и может привести к проблемам с переносимостью в дальнейшем.Особенно для платформ, которые упаковывают структуры по-разному и используют различное выравнивание слов.Он также может быть испорчен с # прагма-пакетом и __declspec (align ())