![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TList и new и dispose и ограничение по расмеру [D7, Win2k]
DimonNew © (2005-03-04 14:58:00)Привет, подскажите пожалуста.
Я создаю список указателей на структуру:
type
PStruct =^TSrtuct;
var
MyStruct : PStruct;
begin
new(MyStruct);
...
List.Add(MyStruct);
end;
Имеет ли ограниченя выделяемая память?
И как правильно очистить List, нужно ли использовать Dispose или достаточно List.Free?
DimonNew (2005-03-04 15:19:00) [1]Спасибо за помощь, вот это Dispose(PStruct(List.Items[...]))меня и интересовало.
begin...end (2005-03-04 15:06:00) [2]> DimonNew (04.03.05 14:58)
> Имеет ли ограниченя выделяемая память?
Естественно, имеет. Ведь если свободная память закончится - ГДЕ же размещать новые данные?
> И как правильно очистить List, нужно ли использовать
> Dispose или достаточно List.Free?
Если речь идёт об экземпляре класса TList, то для очистки самого TList (который является хранилищем указателей) достаточно вызвать List.Free (а если не требуется уничтожение самого объекта List - то достаточно и List.Clear). А вот об освобождении той памяти, на которые эти указатели указывали, т.е. той, которую Вы сами выделяли с помощью New, придётся позаботиться Вам . С помощью Dispose. Т.е. нужно будет вначале для каждого элемента TList (т.е. указателя) вызвать Dispose: Dispose(PStruct(List.Items[...])), а потом уже уничтожить сам список: List.Free.
Reindeer Moss Eater (2005-03-04 15:01:00) [3]Имеет ли ограниченя выделяемая память?
Конечно имеет.
И как правильно очистить List, нужно ли использовать Dispose или достаточно List.Free?
Очистить лист - clear.
Освободить память после New - Dispose.