Когда вы говорите «лучший», вы имеете в виду «правильный» (т. Е. Не вызовет ли хаос доступ к освобожденной памяти) или «самый эффективный» или что?
Что касается правильности: все, что выНапример, если вы позаботитесь о том, чтобы не получить доступ к данным после их освобожденияОчевидный простейший подход (о котором я не буду говорить явно, потому что это похоже на домашнюю работу :-), но это то, что вы бы сделали, если бы хотели написать как можно меньше кода [РЕДАКТИРОВАТЬ, чтобы добавить: это то, что опубликовал «cnicutar»;Я надеюсь, что это не домашняя работа, в конце концов!]) Просто отлично работает.
Вы можете получить более эффективные результаты (в пространстве или времени), если сопоставите порядок освобождения с порядком распределения, нодетали зависят от вашего распределителя памяти, и вам, вероятно, это не важно.