|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.08.2021, 16:26 | #1 |
Пользователь
Регистрация: 30.05.2018
Сообщений: 56
|
Удаление односвязного списка в СИ
Здравствуйте! Подскажите, пожалуйста, почему при вызове функции "list_destroy()" у меня элементы списка не удаляются, а выводятся в консоль все те, которые были до вызова "list_destroy()". Как они вообще могут выводится, если я с помощью "free()" удаляю переход от одного элемента списка к другому.
Код:
|
08.08.2021, 18:48 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,341
|
free не разрушает данные в памяти, а возвращает выделенный участок памяти системе. Данные все еще доступны, но работа с ними считается неопределенным поведением и может вызывать ошибки сегментации. После вызова list_destroy нужно занулить переданный указатель или сразу передавать в list_destroy двойной указатель и занулять внутри.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
08.08.2021, 20:52 | #3 |
Пользователь
Регистрация: 30.05.2018
Сообщений: 56
|
Спасибо за разъяснение
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
В чем отличие односвязного списка от кольцевого односвязного списка? | Yudin | Общие вопросы C/C++ | 3 | 08.06.2018 17:07 |
Удаление элемента по названию из односвязного списка | samsandr | Помощь студентам | 0 | 28.05.2014 02:16 |
удаление элемента односвязного списка. язык СИ. всего 5 строчек кода, много времени не займет. | MisterTreb | Помощь студентам | 0 | 08.01.2013 15:17 |
Сортировка односвязного списка (C++) | biograf | Помощь студентам | 0 | 14.12.2010 21:21 |
Сортировка односвязного списка | amerhant | Общие вопросы C/C++ | 1 | 13.05.2010 20:25 |