Вниз
Скачать: CL | DM;

Непонятка с указателями и списком TList   Найти похожие ветки 

← →
Antip   (2006-01-20 21:59) [0]

До этого старался избегать работать с указателями, но если все делать правильно, то это вполне интересное занятие ;) Только некоторые моменты начинаешь не понимать). Так вот у меня возник вопрос, а нужно ли в моем случае после объявления указателя aMyItem и добавления его в список приравнивать к nil, чтобы уничтожить указатель и избежать какой-либо утечки памяти? Главное, что работает в обоих случаях и по идее если я уничтожаю указатель aMyItem, то должен такой же уничтожится и в TMyList, ведь адреса то вроде у них одинаковы. Или я что-то путаю?
Спасибо заранее за помощь.

Вот исходник мой:

 TMyItem = record
   Name     : WideString;
 end;
 pMyItem = ^TMyItem;
 TMyList = TList;
...
var
 Form1: TForm1;
 List: TMyList;
...
 List := TMyList.Create;
...

procedure TForm1.Button1Click(Sender: TObject);
var aMyItem : pMyItem;
begin
 New(aMyItem);
 aMyItem.Name := "Привет";
 List.Add(aMyItem);
 aMyItem := nil;
end;


← →
Desdechado ©   (2006-01-20 22:53) [1]

в tlist ты добавил указатель на память
aMyItem := nil; - это НЕ освобождение, освобождение делается через Dispose
теперь этот указатель указывает ни на что
а в листе СВОЙ указатель, который указывает на ту область памяти, которую ты выделил


← →
Джо ©   (2006-01-20 22:57) [2]

> aMyItem := nil;

Нет, это лишнее и ни к чему не приведет.


← →
Antip   (2006-01-20 22:59) [3]

Спасибо братцы, теперь понял ;)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.037 c
1-1136394697
capkoh
2006-01-04 20:11
2006.02.05
Ошибка при обращении со строками


2-1137662706
49 Cent
2006-01-19 12:25
2006.02.05
Запрос выдает ошибку "Недопустимое имя псевдонима"


4-1132644725
Pank83
2005-11-22 10:32
2006.02.05
Отследить запуск процесса


2-1137704176
kizam
2006-01-19 23:56
2006.02.05
такая ошыбка


6-1130344439
cerber
2005-10-26 20:33
2006.02.05
Запуск скрипта в HTML документе, загруженном в WebBrowser?




   Наверх