Я читаю главу 17 C Primer Plus, а вот код segament освободить связанный список в книге:глава 17 C Primer Plus - о том, как освободить весь связанный список
/* Program done, so free allocated memory */
current = head;
while (current != NULL)
{
free(current);
current = current->next;
}
printf("Bye!\n");
return 0;
}
В инструкции while, как бы «текущая» переменная получила следующее значение после того, как уже была освобождена? Я искал некоторые сегрегации кода для бесплатных связанных списков в Интернете, и они, похоже, используют два указателя в инструкции while, чтобы избежать предыдущей проблемы.
Однако, если это ошибка, я не мог найти это в errata. Итак, любые комментарии?
Спасибо!
Это ошибка в книге. Этот код вызывает неопределенное поведение. –
Книга программирования с ошибкой Я в шоке ... УБЕДИТЕСЬ Я говорю! В других новостях небо голубое. Я, конечно, шучу, что такие ошибки никогда не исправляются. –