Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.07;
Скачать: CL | DM;

Вниз

Освобождение памяти при завершении работы с Tlist   Найти похожие ветки 

 
INTAARI   (2003-06-25 11:25) [0]

Привет колеги!!!
Имеется список с числом указателей 120. Каждые 2 секунды происходит добавление элемента в начало списка с выделением память. У меня возник вопрос, надоли освобождать память вылетевшей из списка записи. Так как получается, что я только выделяю память, и не очищаюь ее. Приложение при отладке работает стабильно без сбоев, память не пожирает, но при закрытии приложение говорит, что ошибка при работе с ячейкой памяти FFFFF ...


procedure TForm1.FormShow(Sender: TObject);
type tps:^real
var
WDlist :Tlist;
Dir:^real;

begin
WDlist:=tlist.Create;
end;

. . . . .

WDlist.count:=120;
WDlist.Capacity:=WDlist.count;
new(Dir);
WDlist.Insert(0,dir);
WDlist.Pack;
. . . . .


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
WDlist.Destroy;
end;


 
panov   (2003-06-25 12:23) [1]


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
i: Integer;
begin
for i := 0 to WDlist.Count-1 do
begin
DisPose(WDlist.Items[i]);
end;
WDlist.Free;
end;



Кроме того, лучше свой тип переопределить(мне кажется):
type
PReal = ^Real;
var
WDlist :Tlist;
Dir: PReal;
...


 
гончий   (2003-06-25 14:10) [2]

Вот вообще без переменных (заодно и лист от Item"ов очистишь):
--------------------------
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
while WDlist.Count > 0 do
begin
DisPose(WDlist.Items[0]);
WDlist.Delete(0);
end;
WDlist.Free;
end;


 
INTAARI   (2003-06-25 16:21) [3]

Спасибо гончий и panov за ответы. Вопрос состоит немногов в другом. Как освобождать память не при завершении программы, а в процессе ее работы. Т. е. каждые 2 секунды происходит добавление элемента в начало списка с выделением память, число элементов фиксированное, как мне очистить ту память которая была выделена под переменные "вылетевшие" из списка.


 
MBo   (2003-06-25 16:26) [4]

перед тем, как указатель будет удален из списка, очищай. В чем проблема-то?


 
icWasya   (2003-06-25 16:27) [5]

может так

new(Dir);
WDlist.Insert(0,dir);
DisPose(WDlist.Items[120]);
WDlist.Delete(120);
WDlist.Pack;


 
panov   (2003-06-25 16:38) [6]

Зачем только в начало списка вставлять - непонятно.

Для того, чтобы было красиво сделано, переопредели класс TList на свой.


 
INTAARI   (2003-06-25 16:43) [7]

Добавление в начало нужно, что бы после каждого добавления нового значения произодить вычисление максимальных и минимальных значений, я просто этот кусов кода не привел в тексте.


 
MBo   (2003-06-25 16:47) [8]

может, имеет смысл не список, а

var A: array[0..119] of double;

добавление:

A[Counter mod 120]:=NewValue;
Inc(Counter);



 
panov   (2003-06-25 16:48) [9]

Все равно непонятно, как вставка в начало может помочь в вычислении таких значений.


 
INTAARI   (2003-06-25 17:12) [10]

Вычисление производится за скользящий инервал две минуты с учетом того, что каждые две секунды добавляется новое значение в начало и соответственно удаляется смамое последнее.


 
MBo   (2003-06-25 17:18) [11]

>INTAARI
Мое предложение не устраивает?


 
INTAARI   (2003-06-25 17:24) [12]


> MBo

Устраивает, но надо добавить несколько строк, чтобы когда масив заполнится началось передвижение данных при добавлении, в начало новых.


 
MBo   (2003-06-25 17:31) [13]

Зачем? i-й по "старости" элемент - (Counter+i) mod 120


 
Anatoly Podgoretsky   (2003-06-25 17:36) [14]

Зачем тут список, когда достаточно статического массива, который при желании очень быстро смещается в любую стронону.


 
Armen   (2003-06-25 17:47) [15]

>INTAARI © (25.06.03 16:43)
>Добавление в начало нужно

Dlya etogo v Delphi est" TStack i TQueue.



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

Текущий архив: 2003.07.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.006 c
1-20101
avkiev
2003-06-19 18:29
2003.07.07
Проблема с вызовом функции


14-20277
Omar2002
2003-06-07 17:43
2003.07.07
Траблы со мной и форумами!


8-20172
Raiden
2003-03-16 09:20
2003.07.07
Проблема со скоростью DelphiХ-игры


14-20289
Andryk
2003-06-20 13:06
2003.07.07
Вот это да, классно отбрили :о))


1-20033
VitaL
2003-06-24 03:28
2003.07.07
Как добавить иконку в трей





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский