<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[CTreeCtrl::SetItemData() -&amp;gt; Memory Leak]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich kämpfe gerade mit einem Memory Leak und hab grad keine Ahnung wie ich den weg bekomme.<br />
Ich habe eine Klasse von CTreeCtrl abgeleitet. An manche Elemente hänge ich mit CTreeCtrl::SetItemData noch Zusatzinformationen an. Um den Speicher wieder frei zu geben habe ich die Memberfunktionen CTreeCtrl::DelteItem und CTreeCtrl::DeleteAllItems überschrieben.<br />
Das ganze funktioniert auch. Wenn ich ein Element aus dem Baum lösche wird der Speicher freigegeben. Ein Problem habe ich erst, wenn ich die Anwendung schließe. Wenn sich in dem Baum noch ein Element befindet, dass Zusatzinformationen besitzt wird davon der Speicher nicht freigegeben.<br />
Meine Idee war es im Destruktor einfach alle Elemente abzuprüfen, ob noch Zusatzinformationen enthalten sind. Wenn ja, würde ich sie einfach löschen. Aber da kommt genau mein Problem: Sobald ich im Destruktor auf die Elemente zugreifen will (z.B. mit GetFirstVisibleItem) kackt mir die gesamte Anwendung ab. So wie es aussieht sind zu dem Zeitpunkt alle Elemente schon gelöscht.</p>
<p>Wie kann ich also den Speicher wieder frei geben? Oder mache ich einfach einen dummen Fehler?</p>
<p>Danke für eure Hilfe!<br />
Volker</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/188051/ctreectrl-setitemdata-gt-memory-leak</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 09:10:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/188051.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 26 Jul 2007 15:41:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CTreeCtrl::SetItemData() -&amp;gt; Memory Leak on Thu, 26 Jul 2007 15:41:30 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich kämpfe gerade mit einem Memory Leak und hab grad keine Ahnung wie ich den weg bekomme.<br />
Ich habe eine Klasse von CTreeCtrl abgeleitet. An manche Elemente hänge ich mit CTreeCtrl::SetItemData noch Zusatzinformationen an. Um den Speicher wieder frei zu geben habe ich die Memberfunktionen CTreeCtrl::DelteItem und CTreeCtrl::DeleteAllItems überschrieben.<br />
Das ganze funktioniert auch. Wenn ich ein Element aus dem Baum lösche wird der Speicher freigegeben. Ein Problem habe ich erst, wenn ich die Anwendung schließe. Wenn sich in dem Baum noch ein Element befindet, dass Zusatzinformationen besitzt wird davon der Speicher nicht freigegeben.<br />
Meine Idee war es im Destruktor einfach alle Elemente abzuprüfen, ob noch Zusatzinformationen enthalten sind. Wenn ja, würde ich sie einfach löschen. Aber da kommt genau mein Problem: Sobald ich im Destruktor auf die Elemente zugreifen will (z.B. mit GetFirstVisibleItem) kackt mir die gesamte Anwendung ab. So wie es aussieht sind zu dem Zeitpunkt alle Elemente schon gelöscht.</p>
<p>Wie kann ich also den Speicher wieder frei geben? Oder mache ich einfach einen dummen Fehler?</p>
<p>Danke für eure Hilfe!<br />
Volker</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1333173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1333173</guid><dc:creator><![CDATA[volker gast]]></dc:creator><pubDate>Thu, 26 Jul 2007 15:41:30 GMT</pubDate></item><item><title><![CDATA[Reply to CTreeCtrl::SetItemData() -&amp;gt; Memory Leak on Fri, 27 Jul 2007 07:49:22 GMT]]></title><description><![CDATA[<p>Destruktor ist zu spät. Versuchs mal mit Überschreiben von OnDestroy oder sowas. Da müsste alles noch da sein. Alternativ kannst du dir auch alle Daten die du an den Tree hängst in einem CObArray oder so merken und dann im Destruktor durchlaufen und löschen. Die ganze ItemData-Löscherei per Tree musst du dann natürlich weglassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1333616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1333616</guid><dc:creator><![CDATA[Cpp_Junky]]></dc:creator><pubDate>Fri, 27 Jul 2007 07:49:22 GMT</pubDate></item><item><title><![CDATA[Reply to CTreeCtrl::SetItemData() -&amp;gt; Memory Leak on Sun, 29 Jul 2007 15:18:32 GMT]]></title><description><![CDATA[<p>Hallo und Danke für deine Antwort!</p>
<p>Ich habe OnDestroy überschrieben. Leider wird meine OnDestroy Methode nicht aufgerufen. Ich bin kein MFC Spezialist. Deshalb gehe ich mal davon aus, dass ich irgend einen dummen Fehler mache. CTreeCtrl::DelteItem überschreiben hat ohne Probleme funktioniert.</p>
<p>Hat jemand eine Idee? Schon mal Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1334408</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1334408</guid><dc:creator><![CDATA[volker gast]]></dc:creator><pubDate>Sun, 29 Jul 2007 15:18:32 GMT</pubDate></item></channel></rss>