Я похоже, тоже пострадал от утечек памяти. (под Win32)
Имею TreeView1.
Создаю там ноды и цепляю их друг к другу как надо. К каждому ноду прицелена Data (указатель на запись pNode_Rec)
Код: Выделить всё
Node_Rec = packed record
Node_ID: integer;
Node_Mode: Byte;
end;
pNode_Rec = ^Node_Rec;
вот так, к примеру:
Код: Выделить всё
var NodeData: pNode_Rec;
new(NodeData);
NodeData^.Node_ID := 5;
TreeView1.Items.AddChildObject(RootNode, 'Новый', NodeData);
В процесс работы надо удалять ноды:
TreeView1.Selected.Delete;
При удалении вызывается «чистилка» памяти из под записи:
Код: Выделить всё
procedure TRoot.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
var NodeData: pNode_Rec;
begin
if (Node = nil) then exit;
if (Node.Data = nil) then exit;
NodeData:= Node.Data;
FreeMem(NodeData);
Node.Data:= nil;
Node.Delete;
end;
Однако память не очищается

С каждой перезагрузкой дерева из 10-20 элементов пожирается около 50 КБ памяти. Пробовал очищать NodeData перед выполнением TreeView1.Selected.Delete; но результат тот же (.
Что с ним можно поделать
