![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
new - выделение места, это значит что данная ячейка занята и не будет выделяться для других указателей (при этом предыдущее значение в памяти сохраняется!).
q^:=5; - присвоение ячейки памяти, адрес которой находится в q числа 5 dispose(q); - освобождение ячейки памяти. Это значит, что ее можно снова использовать для других целей (при этом ячейка не теряет своего значения - 5. q по-прежнему содержит адрес данной ячейки). q:=nil; - сброс адреса в указателе. Указатель не на что не указывает (вернее указывает на недоступную область памяти) Label1.Caption:=inttostr(q^); - попытка прочитать значение ячейки памяти по адресу находящемся в q. При это естественно будет ошибка, потому что указатель ссылается на недоступное место. Мораль всей басни - где то в недрах компа по-прежнему живет ячейка имеющая значение 5. Но после q:=nil; найти Вы ее не сможете, если до этого не сохраняли адрес где-то еще (как Вы предлагаете это сделать с промежуточной переменой). Чисто теоретически если Вы знаете что ищете, то смещая указатель можно найти эту область памяти (если она не будет затерта новым вызовом new, который может возникать кстати и без Вашего участия, например через SetLength(), или скажем, после модификации AnsiString). Думаю объяснил понятней уже некуда.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#12 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Код:
Причем я бы еще обнулил содержимое в самой ячейке, если это для меня так важно.
I'm learning to live...
|
![]() |
![]() |
![]() |
#13 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]() Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
динамическая память в си | 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 |