![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Loki |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 9.7.2006 Репутация: нет Всего: нет |
Привет,
Давненько уже тут не бывал.
вот пример того как пытаюсь чистить двойной указатель items. Мне нужно выделять память, я делаю это 1 раз и 1 раз чищу. Все что в ремарках это старые пробы, но не работает. Вот что valgrind по этому поводу сказал.
Раньше всегда пользовался массивами из обычных указателей, теперь возникла необходимость сделать другим способом. Это сообщение отредактировал(а) Loki - 20.7.2013, 07:35 |
||||
|
|||||
feodorv |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Честно говоря, совсем не понятно, чего Вы хотите добиться с помощью "двойного указателя".
Вот неважно, сколько звёзд у items. Если Вы делаете items = calloc/malloc, то обязаны сделать
а не
Хорошо ещё программа не рухнула, а ведь могла бы... -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||
|
|||||||
Loki |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 9.7.2006 Репутация: нет Всего: нет |
странно, но вроде работает, free принимает *, а я декларирую **.
void free(void *ptr); valgrind сказал что теперь чистится. а как почтистить аргумент структуры?
Это сообщение отредактировал(а) Loki - 20.7.2013, 13:47 |
|||
|
||||
feodorv |
|
||||||||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
А чем для free() отличается void ** от void *? Сколько бы звёзд не было у указателя, всё равно это указатель:
После правки на free( items )? Чтобы Вы не делали в виде
то, если не меняли x в процессе выполнения кода, чистка происходит с тем же x:
Соответственно:
И всё-таки, вопрос повис в воздухе:
Если хотите динамический список структур, то это делается так:
Если хотите статический список структур, то так:
Зачем Вам "двойной указатель"? -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||||||||||||
|
|||||||||||||||
Loki |
|
||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 9.7.2006 Репутация: нет Всего: нет |
Все то оно парвильно, второе(со указателем в стректуре) работает в маленьком примере.
А вот в большом нет.
функция по чистке вот такая...
И еще вопрос по дебагу... Что делать вот с таким.
|
||||||
|
|||||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
Loki |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 9.7.2006 Репутация: нет Всего: нет |
вот тут тему создал, что-то никто так и не подсказал...
http://forum.vingrad.ru/forum/topic-370575.html там пример компилируемый. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Loki, просто твои вопросы к Unix отношения почти не имеют. Вот если бы у тебя были проблемы создания модуля ядра Linux, с вызовом ioctl или работы с curl, то тогда тебе туда. А вопросы по стандартной библиотеке сюда или в общие вопросы (но твои вопросы именно "начинающие").
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |