J'ai créé une petite application multi-thread et j'essaye de la convertir pour utiliser OmniThreadLibrary. J'utilise le Virtualtreeview pour afficher un journal et le statut/résultats. Le journal de Vst a seulement deux colonnes et l'enregistrement contient juste deux champs de chaîne (extrêmement simple, aucun objet dans l'enregistrement). En utilisant un projet DEMO fourni avec OTL (pool de threads n ° 11), j'ai changé le projet pour utiliser un VirtualTreeview au lieu de la listbox. Quand je "Run Task" de la démo il n'y a pas de fuite de mémoire, mais si je lance "Run Task" plus d'une fois une fuite de mémoire se produira. Une fuite de mémoire se produira si je exécute une tâche plus d'une fois. Si je n'utilise pas du tout VirtualTreeView, aucune fuite de mémoire ne se produit à aucun moment. Juste quand j'utilise le VST et quand une tâche est exécutée plus d'une fois.Fuite de mémoire en utilisant VirtualTreeview et OTL
J'utilise l'événement FreeNode et effacer les cordes, et même essayé d'utiliser Finaliser ...
exemple:
procedure TFormMain.vstLogFreeNode(Sender: TBaseVirtualTree;
Node: PVirtualNode);
var
LogData: PTreeLogData;
begin
LogData:=Sender.GetNodeData(Node);
if Assigned(LogData) then begin
LogData^.Msgtype := '';
LogData^.Msg := '';
end;
//Finalize(LogData^);
end;
pourquoi dois-je obtenir une fuite de mémoire lorsqu'une tâche est exécutée plus une fois que? Delphi 2010 avec FastMM4 dernier VirtualTreeview et OTL
Créez un petit programme qui présente ce comportement et publiez-le sur le forum OTL (http://otl.17slon.com/forum). Je suis toujours là pour aider. – gabr
J'allais poster sur votre forum, mais j'étais à peu près sûr que c'était un problème avec la Virtual Treeview, et comme il s'est avéré que le problème venait du VTreeview. Btw, merci pour OTL – Logman