<?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[Anfängerfrage zu MEMORY LEAKS DETECTED]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin mir zwar sicher, dass mein Problem schon mal aufgetaucht ist, weiss aber nicht, nach welchen Stichworten ich suchen soll.</p>
<p>Mein Anfänger-Programm ist voller Memory-Leaks, die ich ausmerzen muss. Bei der Fehlersuche bin ich darauf gekommen, dass schon die einfache Funktion</p>
<pre><code>void CreateD3DFont(void)
{
	D3DXFONT_DESC FontDesc = { 0 };
	strcpy(FontDesc.FaceName, &quot;Arial&quot;);
	FontDesc.Height = 60;
	D3DXCreateFontIndirect(lpD3DDevice, &amp;FontDesc, &amp;lpD3DFont);
}
</code></pre>
<p>&quot;4 allocations unfreed&quot; auslöst und einen automatischen Breakpoint hervorruft. Vermutlich muss ich einfach das FontDesc am Ende der Funktion wieder löschen?! - Wenn ja: Wie? Bei euch im Forum habe ich schon DeleteObject gefunden, in meinen Büchern steht delete, auch delete[] oder = NULL habe ich ausprobiert, - aber es funktioniert einfach nicht.</p>
<p>Ich bitte um eine kleine Hilfestellung und hoffe, das mit den Memory-Leaks dann gleich so zu verstehen, dass ich alle anderen auch gleich mit beheben kann.</p>
<p>Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/148527/anfängerfrage-zu-memory-leaks-detected</link><generator>RSS for Node</generator><lastBuildDate>Sat, 18 Jul 2026 20:29:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/148527.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 27 May 2006 16:26:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfängerfrage zu MEMORY LEAKS DETECTED on Sat, 27 May 2006 16:26:06 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin mir zwar sicher, dass mein Problem schon mal aufgetaucht ist, weiss aber nicht, nach welchen Stichworten ich suchen soll.</p>
<p>Mein Anfänger-Programm ist voller Memory-Leaks, die ich ausmerzen muss. Bei der Fehlersuche bin ich darauf gekommen, dass schon die einfache Funktion</p>
<pre><code>void CreateD3DFont(void)
{
	D3DXFONT_DESC FontDesc = { 0 };
	strcpy(FontDesc.FaceName, &quot;Arial&quot;);
	FontDesc.Height = 60;
	D3DXCreateFontIndirect(lpD3DDevice, &amp;FontDesc, &amp;lpD3DFont);
}
</code></pre>
<p>&quot;4 allocations unfreed&quot; auslöst und einen automatischen Breakpoint hervorruft. Vermutlich muss ich einfach das FontDesc am Ende der Funktion wieder löschen?! - Wenn ja: Wie? Bei euch im Forum habe ich schon DeleteObject gefunden, in meinen Büchern steht delete, auch delete[] oder = NULL habe ich ausprobiert, - aber es funktioniert einfach nicht.</p>
<p>Ich bitte um eine kleine Hilfestellung und hoffe, das mit den Memory-Leaks dann gleich so zu verstehen, dass ich alle anderen auch gleich mit beheben kann.</p>
<p>Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066229</guid><dc:creator><![CDATA[DieTotaleInkompetenz]]></dc:creator><pubDate>Sat, 27 May 2006 16:26:06 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu MEMORY LEAKS DETECTED on Sat, 27 May 2006 16:42:20 GMT]]></title><description><![CDATA[<p>Objekte, die man mit new auf dem Heap anlegt, muss man mit delete wieder löschen.<br />
Arrays wie new int[n] &quot;löscht&quot; man mit delete[]. Am besten ein kleines Konsolen-Beispiel hierfür:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdlib&gt;
#include &lt;ctime&gt;
using namespace std;

int main()
{
    unsigned n;       // Anzahl Werte
    double   s;       // Summe 
    int   * pa;       // Zeiger auf dynam. Array 

    cout &lt;&lt; &quot;Wie viele Zufallswerte? &quot;;
    cin &gt;&gt; n;         // Erst zur Laufzeit ermittelt !!! 
    pa = new int[n];  // dynamisches Array zur Laufzeit anfordern !!!

    srand( unsigned( time(0) ) );

    for (int i=0; i&lt;n; i++)
    {
        pa[i] = rand() % 99 + 1 ; // Zufallszahlen 1 ... 99 generieren
        //cout &lt;&lt; pa[i] &lt;&lt; ' ';
    }

    s = 0;

    for( unsigned i=0; i&lt;n; ++i )
        s += static_cast&lt;double&gt;( pa[i] );
    cout &lt;&lt; endl &lt;&lt; &quot;Mittelwert: &quot; &lt;&lt; s / n &lt;&lt; endl; // Erwartung: 50.0

    delete[] pa;  // Speicher für dynamisches Array freigeben.
    pa = NULL;    // Zur Sicherheit gelöschten Zeiger auf NULL setzen.
}
</code></pre>
<p>In Klassen erstellt man die Daten auf dem Heap z.B. im Konstruktor und löscht die erhaltenen Zeiger darauf z.B. im Destruktor oder einer ähnlichen Funktion (DestroyWindow, ...). Memory Leaks findest Du mit dem MSVC++ Debugger.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066237</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066237</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Sat, 27 May 2006 16:42:20 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu MEMORY LEAKS DETECTED on Sat, 27 May 2006 16:54:38 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort!</p>
<p>Das klingt plausibel und schon halbwegs bekannt - aber ich habe gar kein &quot;new&quot; benutzt (im ganzen Programm nicht).</p>
<p>Die Funktion wird mit CreateD3DFont(); aufgerufen. Auch die Variablen sind z.B. mit</p>
<pre><code>LPD3DXFONT			lpD3DFont = NULL;
</code></pre>
<p>deklariert. Ich weiss einfach nicht, was ich löschen soll. Wenn ich die Funktion und deren Aufruf aus dem Code herauslösche, sind keine Memory Leaks da. Ansonsten steht dort:</p>
<pre><code>D3DX: MEMORY LEAKS DETECTED: 4 allocations unfreed (1051400 bytes)
D3DX: Set HKLM\Software\Microsoft\Direct3D\D3DXBreakOnAllocId=0x1 to debug
Das Programm &quot;[3420] DirectXTest020.exe: Systemeigen&quot; wurde mit Code 0 (0x0) beendet.
</code></pre>
<p>Wobei ich den Registry Key schon gesetzt habe - Effekt war aber ausschließlich, dass bei jedem Aufruf des Programms im Debug Modus die Meldung &quot;DirectXTest020.exe hat einen Haltepunkt ausgelöst.&quot; erscheint - und zwar genau auf der } Klammer zu der Funktion.</p>
<p>Deinem Beispiel nach müsste ich doch so etwas wie</p>
<pre><code>delete FontDesc;
</code></pre>
<p>schreiben. Daran, dass das nicht funktioniert, sehe ich, dass ich wohl etwas falsch verstanden habe.</p>
<p>Wahrscheinlich machen meine nicht vorhandenen Gehirnwindungen gerade auf sich aufmerksam. Es hilft aber alles nichts, ich muss noch einmal nachfragen... Den dicken Holzhammer habe ich in den letzten paar Stunden schon einige male ausprobiert, - zum größten Teil mit Erfolg, aber in diesem Falle bisher noch nicht ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066256</guid><dc:creator><![CDATA[DieTotaleInkompetenz]]></dc:creator><pubDate>Sat, 27 May 2006 16:54:38 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu MEMORY LEAKS DETECTED on Sat, 27 May 2006 16:57:31 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">if( lpD3DFont ) {
		lpD3DFont-&gt;Release();
		lpD3DFont = 0;
	}
</code></pre>
<p>Safe Release im Destructor</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066260</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Sat, 27 May 2006 16:57:31 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu MEMORY LEAKS DETECTED on Sat, 27 May 2006 17:06:05 GMT]]></title><description><![CDATA[<p>Das ist super - Danke!!! Ihr seid die Besten! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066270</guid><dc:creator><![CDATA[DieTotaleInkompetenz]]></dc:creator><pubDate>Sat, 27 May 2006 17:06:05 GMT</pubDate></item><item><title><![CDATA[Reply to Anfängerfrage zu MEMORY LEAKS DETECTED on Sat, 27 May 2006 17:53:06 GMT]]></title><description><![CDATA[<p>Hurra - meine Anwendung läuft jetzt wirklich länger als 30 Sekunden am Stück! - Ihr habt mir erstklassig weitergeholfen! Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1066310</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1066310</guid><dc:creator><![CDATA[DieTotaleInkompetenz]]></dc:creator><pubDate>Sat, 27 May 2006 17:53:06 GMT</pubDate></item></channel></rss>