|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.03.2010, 00:05 | #1 |
Новичок
Джуниор
Регистрация: 24.03.2010
Сообщений: 5
|
Динамическая память
Столкнулся с такой проблемой, не пойму в чем дело.
Код:
Последний раз редактировалось Stilet; 25.03.2010 в 08:06. |
25.03.2010, 06:47 | #2 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Почему Вы собственно решили что это проблема?
И в переменной остается не 5, а адрес ячейки где это число хранится. А это большая разница. Память высвобождается в том смысле, что ее можно использовать повторно, речь об инициализации выделенной памяти не идет. Освобожденный блок памяти считается свободным, но информацию оттуда надо удалять вручную (если надо).
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
25.03.2010, 06:54 | #3 |
Новичок
Джуниор
Регистрация: 24.03.2010
Сообщений: 5
|
Получается что я очищаю динамическую переменную, а она остается. А потом может быть этот блок памяти может быть использован для других целей? И как я теперь должен избавиться от этой 5?
Будет ли высвобождена память в этом случае Код:
Код:
Последний раз редактировалось Stilet; 25.03.2010 в 08:06. |
25.03.2010, 07:17 | #4 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Цитата:
А зачем Вам избавляться от 5-ки? Можете сделать две вещи: а) изменить указатель q:=nil; б) изменить значение ячейки q^:=0; (до Dispose)
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
|
25.03.2010, 07:21 | #5 |
Новичок
Джуниор
Регистрация: 24.03.2010
Сообщений: 5
|
я должен избавиться от последнего элемента однонаправленного списка, как будет правильно
так Код:
Последний раз редактировалось Stilet; 25.03.2010 в 08:06. |
25.03.2010, 07:38 | #6 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Первый вариант, ИМХО.
ЗЫ. Для всяких там списков и стеков я использую динамические массивы и никогда не парюсь с указателями . По сути тоже самое, но мне не надо следить за тем, кому и чего выделять и высвобождать. И главное правило при таких играх - перед использованием и высвобождением память всегда инициализируется (присваивается начальное значение, допустим нуль).
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика Последний раз редактировалось Utkin; 25.03.2010 в 07:48. |
25.03.2010, 08:12 | #7 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
т.е. вариант Уткина №А
I'm learning to live...
|
|
25.03.2010, 08:27 | #8 |
Новичок
Джуниор
Регистрация: 24.03.2010
Сообщений: 5
|
Если я последний указатель сделаю nil, тогда блок памяти на который раньше ссылался этот указатель останется не освобожденным, так как теперь этот указатель просто не будет никуда ссылаться. Поэтому если q - последний указатель, то будет ли корректно реализована очистка
Код:
|
25.03.2010, 08:31 | #9 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Закинь ты свой вариант с промежуточной переменной. Мне кажется ты уже давно решил для себя как поступишь, а не спрашиваешь совета.
Код:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
25.03.2010, 08:47 | #10 |
Новичок
Джуниор
Регистрация: 24.03.2010
Сообщений: 5
|
Просто я хочу разобраться что все таки происходит в результате подобных действий в подробностях. Если бы мне просто нужно было решение я бы и не заморачивался. Мне нужно глубокое понимание данного вопроса.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
динамическая память в си | Serjuk | Помощь студентам | 0 | 27.12.2009 13:54 |
Динамическая память!!! | Doholyan | Паскаль, Turbo Pascal, PascalABC.NET | 12 | 30.06.2009 17:11 |
динамическая память | aka_faith | Общие вопросы C/C++ | 47 | 12.06.2009 12:35 |