<?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[speicherleck?]]></title><description><![CDATA[<p>hi,</p>
<p>bin gerade von visual 6 auf visual 2005 umgestiegen und jetzt geht bei meinem alten projekt nix mehr. nachdem ich nun alle stringfunktionen umgeändert habe meckert er jetzt bei free:</p>
<pre><code class="language-cpp">typedef struct
{
	double x, y, z, PhiZ;
} t_coord;

int DrawNumZ (HDC hdc, int offset, REAL *ev, int nx, int ny, double h)
{
    t_coord	   **P;
    int            i;

    if ((P = (t_coord **)calloc((ny), sizeof(t_coord *))) != NULL)		   
    for (i = 0; i &lt; (nx); i++)	
    {  
        if ((((t_coord **)P)[i] = (t_coord *)calloc(nx, sizeof(t_coord))) == NULL)
        {
            P = NULL;		
            break;									
        }	
    }

    blabla.....

    for (i=0; i&lt;nx; i++)
	free (P[i]);
    free (P);                  // &lt;- Error
}
</code></pre>
<p>also ich will in einer fkt dynamisch reservierten speicher wieder freigeben, denn ohne macht ers irgenwie auch nicht. Was hab ich falsch gemacht? hoffe mir kann jemand helfen.</p>
<p>gruß christian</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/148084/speicherleck</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 12:59:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/148084.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 May 2006 09:50:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to speicherleck? on Tue, 23 May 2006 09:50:29 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>bin gerade von visual 6 auf visual 2005 umgestiegen und jetzt geht bei meinem alten projekt nix mehr. nachdem ich nun alle stringfunktionen umgeändert habe meckert er jetzt bei free:</p>
<pre><code class="language-cpp">typedef struct
{
	double x, y, z, PhiZ;
} t_coord;

int DrawNumZ (HDC hdc, int offset, REAL *ev, int nx, int ny, double h)
{
    t_coord	   **P;
    int            i;

    if ((P = (t_coord **)calloc((ny), sizeof(t_coord *))) != NULL)		   
    for (i = 0; i &lt; (nx); i++)	
    {  
        if ((((t_coord **)P)[i] = (t_coord *)calloc(nx, sizeof(t_coord))) == NULL)
        {
            P = NULL;		
            break;									
        }	
    }

    blabla.....

    for (i=0; i&lt;nx; i++)
	free (P[i]);
    free (P);                  // &lt;- Error
}
</code></pre>
<p>also ich will in einer fkt dynamisch reservierten speicher wieder freigeben, denn ohne macht ers irgenwie auch nicht. Was hab ich falsch gemacht? hoffe mir kann jemand helfen.</p>
<p>gruß christian</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063374</guid><dc:creator><![CDATA[neandertaler]]></dc:creator><pubDate>Tue, 23 May 2006 09:50:29 GMT</pubDate></item><item><title><![CDATA[Reply to speicherleck? on Tue, 23 May 2006 09:54:40 GMT]]></title><description><![CDATA[<p>Möchtest Du &quot;Fehler&quot; auch noch etwas genauer beschreiben oder sollen wir hellsehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063378</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063378</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 23 May 2006 09:54:40 GMT</pubDate></item><item><title><![CDATA[Reply to speicherleck? on Tue, 23 May 2006 09:56:21 GMT]]></title><description><![CDATA[<p>Erstmal sind da ein paar überflüssige Casts drin, die die LEsbarkeit nicht gerade erhöhen.</p>
<p>Zweitens solltest du auch nach der Fehlerbehandlung dafür sorgen, daß dein Speicher sauber freigegeben wurde.</p>
<p>Und drittens: WAS FÜR EINEN Fehler meldet dein Compiler?</p>
<p>(PS: Viertens gehört das eine Etage höher ;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063379</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 23 May 2006 09:56:21 GMT</pubDate></item><item><title><![CDATA[Reply to speicherleck? on Tue, 23 May 2006 09:57:21 GMT]]></title><description><![CDATA[<p>neandertaler schrieb:</p>
<blockquote>
<pre><code class="language-cpp">...
            P = NULL;		
...
</code></pre>
</blockquote>
<p>solltest du dafür nicht besser P[i] = NULL; schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063382</guid><dc:creator><![CDATA[net 0]]></dc:creator><pubDate>Tue, 23 May 2006 09:57:21 GMT</pubDate></item><item><title><![CDATA[Reply to speicherleck? on Tue, 23 May 2006 10:00:17 GMT]]></title><description><![CDATA[<p>du holst dir ein array mit platz fuer &quot;ny&quot; t_coord* und beschreibst davon &quot;nx&quot; elemente.<br />
sinnvoll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063384</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063384</guid><dc:creator><![CDATA[hellihjb]]></dc:creator><pubDate>Tue, 23 May 2006 10:00:17 GMT</pubDate></item><item><title><![CDATA[Reply to speicherleck? on Tue, 23 May 2006 10:08:39 GMT]]></title><description><![CDATA[<p>dachte es wäre was offensichtiliches, was ich mal wieder übersehen hätte. also für alles nicht-hellseher ; )</p>
<p>die fehlermeldung</p>
<pre><code>Windows hat einen Haltepunkt in Rectangular.exe ausgelöst.

Dies kann auf eine Beschädigung des Heaps zurückzuführen sein und weist auf ein Problem in Rectangular.exe oder in einer der geladenen DLLs hin.

Weitere Analyseinformationen finden Sie möglicherweise im Ausgabefenster.
</code></pre>
<p>danach springt der debugger in die datei dbgheap.c, Zeile 475 zu</p>
<pre><code class="language-cpp">_munlock(_HEAP_LOCK);
</code></pre>
<p>hoffe das ist etwas klarer jetzt. mit der speicherallokierung dürfte es eigentlich keine probleme geben, die benutze ich so öfter und meckert der compiler nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063390</guid><dc:creator><![CDATA[Neandertaler]]></dc:creator><pubDate>Tue, 23 May 2006 10:08:39 GMT</pubDate></item><item><title><![CDATA[Reply to speicherleck? on Tue, 23 May 2006 10:09:50 GMT]]></title><description><![CDATA[<p>sorry, nicht der compiler, sondern der debugger meckert. ist ja wohl ein unterschied</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063391</guid><dc:creator><![CDATA[neandertaler]]></dc:creator><pubDate>Tue, 23 May 2006 10:09:50 GMT</pubDate></item><item><title><![CDATA[Reply to speicherleck? on Tue, 23 May 2006 10:30:29 GMT]]></title><description><![CDATA[<p>ok, war doch die allokierung. danke für den tip, hätte sonst noch lange an der falschen stelle gesucht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063406</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063406</guid><dc:creator><![CDATA[neandertaler]]></dc:creator><pubDate>Tue, 23 May 2006 10:30:29 GMT</pubDate></item><item><title><![CDATA[Reply to speicherleck? on Tue, 23 May 2006 15:02:25 GMT]]></title><description><![CDATA[<p>net schrieb:</p>
<blockquote>
<p>neandertaler schrieb:</p>
<blockquote>
<pre><code class="language-cpp">...
            P = NULL;		
...
</code></pre>
</blockquote>
<p>solltest du dafür nicht besser P[i] = NULL; schreiben?</p>
</blockquote>
<p>Eigentlich braucht er das überhaupt nicht zu schreiben. P = NULL ist an der Stelle logisch falsch, und P[i] = NULL schreibt er ja bereits zwei Zeilen darüber.</p>
<p>@neandertaler<br />
Zudem solltest du über deine Speicherreservierung nochmal nachdenken. Evtl. würde es auch reichen, plain zu allokieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1063605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1063605</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Tue, 23 May 2006 15:02:25 GMT</pubDate></item></channel></rss>