Не могли бы вы помочь мне решить эту проблему. Вот мой код. Я храню (в этом примере) 10000 строк, и когда я пытаюсь удалить их, только некоторый объем памяти освобождает остальные утечки.запись и утечка памяти
type
PMyData = ^TMyData;
TMyData = record
Name: string;
end;
////////
var
XList:Tlist;
//////////
// Here is how I add//
var
MyData: PMyData;
I:Integer;
begin
for I:=0 to 10000 do begin
New(MyData);
MyData.Name:='Hello';
XList.Add(TObject(MyData));
end;
end;
///Here is how I delete///
var
MyData: PMyData;
I:Integer;
begin
for I:= XList.Count - 1 downto 0 do begin
MyData:=PMyData (XList[I]); /// I also used (XList.Items[I]) but the result is the same
Dispose(MyData);
XList.Delete(I);
end;
OK. Спасибо за помощь!Я также считаю, что утечки нет, но все же. Это более заметно, когда я добавляю 200000 строк. Например, если я добавляю 200000 строк в первый раз, мое приложение использует (в соответствии с Windows Task Manager: «Mem Usage» - 15304k и «VM Size» - 13492k), я пытаюсь освободить память, и теперь мое приложение использует: 7616k/5800k. Если я добавлю еще две строки (400000), мое приложение теперь использует: 25480k/23436k и 8824k/6768k после того, как я освобожу его, что больше, чем у меня, когда он был освобожден в первый раз (7616k/5800k). Итак, это нормально, чем больше строк я добавляю, тем больше памяти, кажется, течет? – Serhiy
Если вы хотите узнать, действительно ли вы что-то протекаете, поместите 'ReportMemoryLeaksAtShutdown: = true;' в свой DPR и посмотрите, не сообщает ли он что-либо, когда вы выходите из программы. –