<?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[Delete im Destruktor liefert Error]]></title><description><![CDATA[<p>Hallo!</p>
<p>der VS 2003 liefert folgenden Fehler gegen Ende des Programms, als der Destruktor versucht dynamischen Array Speicher mit delete [] freizugeben. Das Freigeben von dynamischen Speicher für eine Klasse klappt problemlos.<br />
Fehlermeldung: Debug Error! Damage after normal block .....</p>
<p>was noch wissenswert ist:<br />
send_frame und rcvd_frame sind struct Variablen.<br />
ein Element davon ist eben dieses<br />
uint8* data; //wobei: typedef signed char uint8</p>
<p>hier der Code:</p>
<pre><code>//Ctor: when a Segmenter is called, his buffers has to be allocated immediately
Segmenter::Segmenter() : length(0), seg_number(0), seg_count(0), retries(0)
{
	cout &lt;&lt; &quot;Konstruktor Segmenter&quot; &lt;&lt; std::endl;
	send_frame.data = new uint8[DATA_LEN];//&lt;--------------------klappt
	rcvd_frame.data = new uint8[DATA_LEN];//&lt;--------------------klappt
	//send_frame.data = (uint8*)malloc(sizeof(uint8)*DATA_LEN);
	//rcvd_frame.data = (uint8*)malloc(sizeof(uint8)*DATA_LEN);
	p_crc      = new Crc16_MC;//&lt;--------------------------------klappt
	assert(p_crc);
}

//when a Segmenter object &quot;dies&quot;, his memory's got to be free
Segmenter::~Segmenter()
{
	cout &lt;&lt; &quot;Destruktor Segmenter&quot; &lt;&lt; std::endl;
	//free(send_frame.data);
	//free(rcvd_frame.data);
	delete [] send_frame.data;//&lt;-------------------------------Error
	delete [] rcvd_frame.data;//&lt;-------------------------------Error
	delete p_crc;//&lt;--------------------------------------------klappt
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/197755/delete-im-destruktor-liefert-error</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 12:14:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/197755.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 14 Nov 2007 13:45:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Delete im Destruktor liefert Error on Wed, 14 Nov 2007 13:45:16 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>der VS 2003 liefert folgenden Fehler gegen Ende des Programms, als der Destruktor versucht dynamischen Array Speicher mit delete [] freizugeben. Das Freigeben von dynamischen Speicher für eine Klasse klappt problemlos.<br />
Fehlermeldung: Debug Error! Damage after normal block .....</p>
<p>was noch wissenswert ist:<br />
send_frame und rcvd_frame sind struct Variablen.<br />
ein Element davon ist eben dieses<br />
uint8* data; //wobei: typedef signed char uint8</p>
<p>hier der Code:</p>
<pre><code>//Ctor: when a Segmenter is called, his buffers has to be allocated immediately
Segmenter::Segmenter() : length(0), seg_number(0), seg_count(0), retries(0)
{
	cout &lt;&lt; &quot;Konstruktor Segmenter&quot; &lt;&lt; std::endl;
	send_frame.data = new uint8[DATA_LEN];//&lt;--------------------klappt
	rcvd_frame.data = new uint8[DATA_LEN];//&lt;--------------------klappt
	//send_frame.data = (uint8*)malloc(sizeof(uint8)*DATA_LEN);
	//rcvd_frame.data = (uint8*)malloc(sizeof(uint8)*DATA_LEN);
	p_crc      = new Crc16_MC;//&lt;--------------------------------klappt
	assert(p_crc);
}

//when a Segmenter object &quot;dies&quot;, his memory's got to be free
Segmenter::~Segmenter()
{
	cout &lt;&lt; &quot;Destruktor Segmenter&quot; &lt;&lt; std::endl;
	//free(send_frame.data);
	//free(rcvd_frame.data);
	delete [] send_frame.data;//&lt;-------------------------------Error
	delete [] rcvd_frame.data;//&lt;-------------------------------Error
	delete p_crc;//&lt;--------------------------------------------klappt
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1403078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403078</guid><dc:creator><![CDATA[JD]]></dc:creator><pubDate>Wed, 14 Nov 2007 13:45:16 GMT</pubDate></item><item><title><![CDATA[Reply to Delete im Destruktor liefert Error on Wed, 14 Nov 2007 13:50:27 GMT]]></title><description><![CDATA[<p>Ich würde ja darauf tippen, daß du beim Zugriff auf die beiden data-Elemente den erlaubten Index überschritten hast (zulässig sind 0 bis DATA_LEN-1). Eine andere Möglichkeit wäre eine Verletzung der &quot;Rule of Three&quot; - der implizit angelegte Copy-Ctor oder Zuweisungsoperator führen eine flache Kopie durch, so daß dein Speicher effektiv mehrmals freigegeben wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403081</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 14 Nov 2007 13:50:27 GMT</pubDate></item><item><title><![CDATA[Reply to Delete im Destruktor liefert Error on Wed, 14 Nov 2007 13:52:37 GMT]]></title><description><![CDATA[<p>wenn das struct von send_frame und rcvd_frame deiner Kontrolle unterliegt dann bau die Kontrolle ueber den allokierten Speicher am Besten dort ein (auch structs koennen Ctor udn Dtor haben).<br />
Ansonsten sieht mir das eigentlich nicht so falsch aus. Kriegst du den Fehler beim Kompilieren von Segmenter oder beim Kompilieren oder Ausfuerhen des Programms? (falls letzteres: wie sieht das Programm aus, bzw. die wesentlichen Zeilen?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403084</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 14 Nov 2007 13:52:37 GMT</pubDate></item><item><title><![CDATA[Reply to Delete im Destruktor liefert Error on Wed, 14 Nov 2007 14:05:39 GMT]]></title><description><![CDATA[<p>Arghhhh!!!</p>
<p>Ja, ich habe den Bereich überschritten.<br />
Wegen der abschließenden '\0', die ich data hinzufüge.<br />
Nun habe ich einfach so allokiert und schon gehts:</p>
<pre><code>send_frame.data = new uint8[DATA_LEN+1];
rcvd_frame.data = new uint8[DATA_LEN+1];
</code></pre>
<p>Vielen Dank ihr habt mir einige Studnen Suche erspart.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1403102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1403102</guid><dc:creator><![CDATA[JD]]></dc:creator><pubDate>Wed, 14 Nov 2007 14:05:39 GMT</pubDate></item></channel></rss>