• XSS.stack #1 – первый литературный журнал от юзеров форума

Указатели в Delphi

Ma-stiff

(L1) cache
Пользователь
Регистрация
15.11.2004
Сообщения
976
Реакции
4
Насколько я знаю, в Delphi память под указатели выделается через New и освобождается через Dispose.
Опытным путём я пришёл к выводу што присвоение указателю NIL эквивалентно высвобождению памяти (по кр. мере Dispose такого указателя вызывает ошибку).
Меня интересует, если создать указатель 2 на указатель 1, то при высвобождении указателя 2 будет высвобожден он сам, указатель 1, данные, на которые ссылается указатель 1 или всё сразу. При таком построении создаётся копия данных указателя 1, копия указателя 1 или указатель на указатель.
Обязательно ли корректное высвобождение памяти перед завершением программы или это делаеццо автоматически.
 
Память высвобождается после корректного закрытия программы.

а по поводу указателей, если ты 1 меняешь на 2, то при присвоении NILа, высвободится эта ячейка полностью.
 
Dispose - он динамическую переменную, в основном он пишется в конце проги.
Есть ещё 2 способа создания переменных,типа:
1) new(); mark(); ... Release();
2) GetMm();... freeMem();
Если не разрушить дин. переменную , то при закрытии проги в памяти она останется.
 
Если не разрушить дин. переменную , то при закрытии проги в памяти она останется.

Хм простите ... где это она останется если процесс завершится и все выделенные ему рессурсы будут высвобождены ?
 
Опытным путём я пришёл к выводу што присвоение указателю NIL эквивалентно высвобождению памяти (по кр. мере Dispose такого указателя вызывает ошибку).
Это далеко не так. Занятая память так и останется занятой. А указатель равный NIL как раз означает, что он ни начто не указывает. Поэтому Dispose не знает что освобождать.

Нигде не останется, в делфи можно и не использовать dispose,указатели и так удалятся.
Когда-нибудь Вы(или пользователи Вашей программы) на этом подорвётесь.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх