Мало того, что все в порядке, но только способ освободить блок памяти, выделенный malloc()
, состоит в том, чтобы дать указатель, возвращаемый от malloc()
до free()
.
Что касается вопроса о том, что «возможно, были отлиты в различные типы и структуры и т. Д.»- в этом нет никаких проблем с тем, что касается malloc()
и free()
, поскольку, когда вы освобождаете блок, ничего не остается активно его использующим.Тем не менее, вам, возможно, придется беспокоиться о других проблемах, связанных с приведением к «различным типам и структурам», таких как проблемы выравнивания и псевдонимов, но malloc()
и free()
не участвуют в этом (если вы не развращаетепамять вне выделенного блока).