Важно также отметить семантику этой функции.Он предназначен для удаления узла из списка, а не для удаления узла, как вы предлагаете в своем вопросе.По крайней мере, это подразумевается именем функции.Я был бы удивлен, если бы он удалил узел без объявления этой семантики.
Более того, у нас нет способа узнать в отдельности, как был выделен объект, поэтому функция не может разумно предположить, что это объект кучи и free()
это - это вызвало бы ошибку во время выполнения, если бы объект был статическим.
Вызывающий объект может удалять объект из списка и продолжать его использовать, эта функция отвечает за поддержание списка , а не объектов в списке, которые существуют независимо.Ответственность за управление памятью принадлежит владельцу entry
.