<?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[new[] - probleme beim reservieren von speicher auf dem heap]]></title><description><![CDATA[<p>Hallo erstma bin neu hier...</p>
<p>ich hab mir ne eigene klasse gebaut sowas ähnliches wie ein array hier:</p>
<pre><code class="language-cpp">template&lt;class t&gt;
class vector {
	private:
		int m_size;
		t *m_data;
	public:
		vector(int size) {
			m_size=size;
			m_data=new t[m_size];
		};
		~vector() {
			delete[] m_data;
		};
		t &amp;operator[](int index) {
			return m_data[index];
		};
		int getsize() {
			return m_size;
		};
		void grow(int newsize) {
			t *tmp=m_data;
			delete[] m_data;
			t *m_data=new t[newsize];
			m_data=tmp;
			m_size=newsize;
			delete[] tmp;
		};
};
</code></pre>
<p>da gibt es nur ein kleines problem wenn ich ich mit void grow die klasse erweitere bekomme ich nach dem beenden des programms noch sone hübsche fehlermeldung hinterhergeschoben:</p>
<blockquote>
<p>*** glibc detected *** ./cppkurs.run: double free or corruption (fasttop): 0x0804b008 ***<br />
======= Backtrace: =========<br />
/lib/libc.so.6[0xb7de4911]<br />
/lib/libc.so.6(__libc_free+0x84)[0xb7de5f84]<br />
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0xb7f82e51]<br />
/usr/lib/libstdc++.so.6(_ZdaPv+0x1d)[0xb7f82ead]<br />
./cppkurs.run[0x8048f24]<br />
./cppkurs.run[0x8048e30]<br />
/lib/libc.so.6(__libc_start_main+0xdc)[0xb7d9687c]<br />
./cppkurs.run(__gxx_personality_v0+0x51)[0x80487f1]<br />
======= Memory map: ========<br />
08048000-0804a000 r-xp 00000000 08:07 163 /home/christoph/programmieren/cppkurs/cppkurs.run<br />
0804a000-0804b000 rw-p 00001000 08:07 163 /home/christoph/programmieren/cppkurs/cppkurs.run<br />
0804b000-0806c000 rw-p 0804b000 00:00 0 [heap]<br />
b7c00000-b7c21000 rw-p b7c00000 00:00 0<br />
b7c21000-b7d00000 ---p b7c21000 00:00 0<br />
[bla bla das geht noch etwas weiter ab will ich euch ersparen]<br />
b7fee000-b7ff0000 rw-p 00019000 08:06 14096 /lib/ld-2.4.so<br />
bfd97000-bfdac000 rw-p bfd97000 00:00 0 [stack]<br />
ffffe000-fffff000 ---p 00000000 00:00 0 [vdso]<br />
Abgebrochen</p>
</blockquote>
<p>wtf is das? das tritt nur auf wenn ich neuen speicher für die klasse reserviere<br />
ich meine beim programmablauf stört es nicht und ich kann auf die angelegten speicher zugreiffen und das programm läuft fehlerfrei aber dasis schon etwas unschön..</p>
<p>wem der code irgendwie bekannt vorkommt is kein wunder is aus volkards cpp kurs Lektion 60 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
<p>Edit: ach ja falls es eine rollen spielen sollte ich hab SuSE Linux 10.1 und benutze g++ als compiler... hoffe ihr könnt mir helfen</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/154399/new-probleme-beim-reservieren-von-speicher-auf-dem-heap</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 01:33:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/154399.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Jul 2006 20:09:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to new[] - probleme beim reservieren von speicher auf dem heap on Wed, 26 Jul 2006 20:18:40 GMT]]></title><description><![CDATA[<p>Hallo erstma bin neu hier...</p>
<p>ich hab mir ne eigene klasse gebaut sowas ähnliches wie ein array hier:</p>
<pre><code class="language-cpp">template&lt;class t&gt;
class vector {
	private:
		int m_size;
		t *m_data;
	public:
		vector(int size) {
			m_size=size;
			m_data=new t[m_size];
		};
		~vector() {
			delete[] m_data;
		};
		t &amp;operator[](int index) {
			return m_data[index];
		};
		int getsize() {
			return m_size;
		};
		void grow(int newsize) {
			t *tmp=m_data;
			delete[] m_data;
			t *m_data=new t[newsize];
			m_data=tmp;
			m_size=newsize;
			delete[] tmp;
		};
};
</code></pre>
<p>da gibt es nur ein kleines problem wenn ich ich mit void grow die klasse erweitere bekomme ich nach dem beenden des programms noch sone hübsche fehlermeldung hinterhergeschoben:</p>
<blockquote>
<p>*** glibc detected *** ./cppkurs.run: double free or corruption (fasttop): 0x0804b008 ***<br />
======= Backtrace: =========<br />
/lib/libc.so.6[0xb7de4911]<br />
/lib/libc.so.6(__libc_free+0x84)[0xb7de5f84]<br />
/usr/lib/libstdc++.so.6(_ZdlPv+0x21)[0xb7f82e51]<br />
/usr/lib/libstdc++.so.6(_ZdaPv+0x1d)[0xb7f82ead]<br />
./cppkurs.run[0x8048f24]<br />
./cppkurs.run[0x8048e30]<br />
/lib/libc.so.6(__libc_start_main+0xdc)[0xb7d9687c]<br />
./cppkurs.run(__gxx_personality_v0+0x51)[0x80487f1]<br />
======= Memory map: ========<br />
08048000-0804a000 r-xp 00000000 08:07 163 /home/christoph/programmieren/cppkurs/cppkurs.run<br />
0804a000-0804b000 rw-p 00001000 08:07 163 /home/christoph/programmieren/cppkurs/cppkurs.run<br />
0804b000-0806c000 rw-p 0804b000 00:00 0 [heap]<br />
b7c00000-b7c21000 rw-p b7c00000 00:00 0<br />
b7c21000-b7d00000 ---p b7c21000 00:00 0<br />
[bla bla das geht noch etwas weiter ab will ich euch ersparen]<br />
b7fee000-b7ff0000 rw-p 00019000 08:06 14096 /lib/ld-2.4.so<br />
bfd97000-bfdac000 rw-p bfd97000 00:00 0 [stack]<br />
ffffe000-fffff000 ---p 00000000 00:00 0 [vdso]<br />
Abgebrochen</p>
</blockquote>
<p>wtf is das? das tritt nur auf wenn ich neuen speicher für die klasse reserviere<br />
ich meine beim programmablauf stört es nicht und ich kann auf die angelegten speicher zugreiffen und das programm läuft fehlerfrei aber dasis schon etwas unschön..</p>
<p>wem der code irgendwie bekannt vorkommt is kein wunder is aus volkards cpp kurs Lektion 60 <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
<p>Edit: ach ja falls es eine rollen spielen sollte ich hab SuSE Linux 10.1 und benutze g++ als compiler... hoffe ihr könnt mir helfen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104920</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104920</guid><dc:creator><![CDATA[jimmy pop]]></dc:creator><pubDate>Wed, 26 Jul 2006 20:18:40 GMT</pubDate></item><item><title><![CDATA[Reply to new[] - probleme beim reservieren von speicher auf dem heap on Wed, 26 Jul 2006 20:24:29 GMT]]></title><description><![CDATA[<p>ਮয ફਥ঴એਮধ ટਯঙપ਩ল੼ਤচઌਦ঳ઌਦওખਨ঑બਯ঒ઓਬণધਬছધਦণભਪল છਥ঳੽ਯ঳੻ਮ঒ઠਥশઆਦঔતਤবફਮজઘਤধબਧ঵એਫঢએਮও੾ਨঞઠਭও઩ਭ঱੽਩঩ જਦস੽ਦসફਯষઞਥভધਫযઐ<br />
ਣ঒ ੿ਮঝઓਨঠ઀ਬ</p>
<blockquote>
<p>double free or corruption</p>
</blockquote>
<p>આਣতઐ਩ঘઋਣ঵ઈਫঝ ઍ਩পકਣত੽ਤঙ੽ਣ঑કਨওઐਤয ੾ਫকઔਧ঳ઊਣপફ਩ওઍਧগછਪডઢ਩঩ડਭ঴જਣ঑ફਤটઌਬঠ઒ਦতઆਤ঩ઑਧছથਦ঴ ભਯঢભਦড અਣষ દਯদંਧবઘਪক઎ਬঙ કਨছ ડਮঔઈਮফ તਭঢથ<br />
ਬগ પਤছ ੾ਮসછਣকઍ</p>
<pre><code class="language-cpp">void grow(int newsize) {
       t *tmp=m_data;
       delete[] m_data;
...
       delete[] tmp;
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1104934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104934</guid><dc:creator><![CDATA[Alien From Mars]]></dc:creator><pubDate>Wed, 26 Jul 2006 20:24:29 GMT</pubDate></item><item><title><![CDATA[Reply to new[] - probleme beim reservieren von speicher auf dem heap on Wed, 26 Jul 2006 21:06:06 GMT]]></title><description><![CDATA[<p>hä? wat? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>griechisch? warum? kann ich leider nich lesen...</p>
<p>P.S heisst das da &quot;κμΘΔβς&quot; zaziki?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104954</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104954</guid><dc:creator><![CDATA[jimmy pop]]></dc:creator><pubDate>Wed, 26 Jul 2006 21:06:06 GMT</pubDate></item><item><title><![CDATA[Reply to new[] - probleme beim reservieren von speicher auf dem heap on Wed, 26 Jul 2006 21:26:05 GMT]]></title><description><![CDATA[<p>noch mal ausführlicher erläutert was Alian From Mars bereits zeigte:</p>
<pre><code class="language-cpp">void grow(int newsize) {
            t *tmp=m_data;
            delete[] m_data;
            t *m_data=new t[newsize];
            m_data=tmp;
            m_size=newsize;
            delete[] tmp;
        };
</code></pre>
<p>überleg mal schritt für schritt was du da machst:<br />
du lässt tmp auf den alten speicherbereich zeigen und löscht ihn dann (womit tmp ungültig wird) legst dann neuen speicher an, den du allerdings in einen lokalen pointer speicherst, da du durch die neudeklaration das klasseneigene m_data verdeckst, dann biegst du den gerade neu belegten pointer auf den alten, ungültigen speicherbereich um und änderst size, wonach du dann erneut den ohnehin schon ungültigen speicher von tmp freigibst.<br />
hoffe habe mich in diesem wirr warr nicht zu sehr verirrt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104961</guid><dc:creator><![CDATA[Cpt. Tanga]]></dc:creator><pubDate>Wed, 26 Jul 2006 21:26:05 GMT</pubDate></item><item><title><![CDATA[Reply to new[] - probleme beim reservieren von speicher auf dem heap on Wed, 26 Jul 2006 22:01:58 GMT]]></title><description><![CDATA[<p>ahhhh schmarrrn</p>
<p>axo ja ich habs verstanden wie bekloppt... ich denke ich muss noch was üben...</p>
<p>danke für die schnelle antwort...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104971</guid><dc:creator><![CDATA[jimmy pop]]></dc:creator><pubDate>Wed, 26 Jul 2006 22:01:58 GMT</pubDate></item><item><title><![CDATA[Reply to new[] - probleme beim reservieren von speicher auf dem heap on Wed, 26 Jul 2006 22:11:18 GMT]]></title><description><![CDATA[<p>jimmy pop schrieb:</p>
<blockquote>
<p>griechisch? warum?</p>
</blockquote>
<p>Griechisch? Das ist Indisch (zumindest die Schrift) ... die Frage nach dem Warum hingegen ist eine gute.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104974</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104974</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Wed, 26 Jul 2006 22:11:18 GMT</pubDate></item><item><title><![CDATA[Reply to new[] - probleme beim reservieren von speicher auf dem heap on Wed, 26 Jul 2006 22:31:49 GMT]]></title><description><![CDATA[<p>Naja, er wollte wohl damit sagen, dass man nicht wirklich was zu sagen braucht, da bereits alles in der Fehlermeldung steht. Bei einem Neuling wohl noch etwas zu viel verlangt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1104984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1104984</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Wed, 26 Jul 2006 22:31:49 GMT</pubDate></item></channel></rss>