Fastream Technologies wrote:
> Do you mean the tree self-destructs nodes and I will be notified of
> it to delete?
You are notified before the class removes and frees a node, i.e method
Remove() triggers event OnFreeData and afterwards frees the node. The class
doesn't own Data but its nodes, so never call method Free of a node returned
by a method.
However if Data points to some previously allocated memory you are
responsible to release it.
> Or is it optional?
Yes, more or less it is. If you, for instance, used Data to store
just an Integer value it's not required to free any memory.
Example:
procedure TForm1.CacheFreeData(Sender: TObject; Data: Pointer; Len: Integer);
begin
FreeMem(Data);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Node: TCacheNode;
MyData: Pointer;
begin
FCache := TCacheTree.Create;
try
FCache.OnFreeData := CacheFreeData;
GetMem(MyData, 1024);
FCache.Insert('AKEY', MyData, 0, Now);
// either
Node := FCache.FindKey('AKEY');
if Node <> nil then
FCache.Remove(Node); // Node no longer valid
// or
FCache.RemoveKey('AKEY');
finally
FCache.Free;
end;
end;
--
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be