![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Непонятка с указателями и списком TList [D7, WinXP]
Antip © (2006-01-20 21:59:00)До этого старался избегать работать с указателями, но если все делать правильно, то это вполне интересное занятие ;) Только некоторые моменты начинаешь не понимать). Так вот у меня возник вопрос, а нужно ли в моем случае после объявления указателя 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;
Antip (2006-01-20 22:59:00) [1]Спасибо братцы, теперь понял ;)
Джо (2006-01-20 22:57:00) [2]> aMyItem := nil;
Нет, это лишнее и ни к чему не приведет.
Desdechado (2006-01-20 22:53:00) [3]в tlist ты добавил указатель на память
aMyItem := nil; - это НЕ освобождение, освобождение делается через Dispose
теперь этот указатель указывает ни на что
а в листе СВОЙ указатель, который указывает на ту область памяти, которую ты выделил