<?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[Windows hat einen Haltepunkt ausgelöst - Beschädigung des Heaps]]></title><description><![CDATA[<p>Hab das Problem ungefähr lokalisieren können, aber ich weis nicht was da Schief läuft.<br />
Ich hab da eine Klasse die nen vector für chars enthält, sollte nur dafür sein dass ich mit weniger code bei Winsocks char arrays senden kann. So sieht die Klasse aus:</p>
<pre><code>class Packet
{
private:
	char* tmpstr;
public:

	vector&lt;char&gt; v;

	Packet();
	~Packet();

	void put(char c);
	void clear();
	char* getPacket();
	int size();
	void freeBuffer();

};
</code></pre>
<p>wahrscheinlich liegt das Problem in der Funktion:</p>
<pre><code>char* Packet::getPacket()
{
	if(size()==0)
		return NULL;		

	tmpstr= new char[size()];
	return tmpstr;
}
</code></pre>
<p>Stimmt da was nicht? Ich erstelle ein neues char-array mit der Größe der Anzahl der Elemente im vector, kurz danach wird auf jeden Fall das Array wieder freigegeben mit dieser Funktion:</p>
<pre><code>void Packet::freeBuffer()
{
	delete[] tmpstr;
}
</code></pre>
<p>Die Funktion wird unter anderem im Destruktor aufgerufen.</p>
<p>Hat jemand ne Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/315340/windows-hat-einen-haltepunkt-ausgelöst-beschädigung-des-heaps</link><generator>RSS for Node</generator><lastBuildDate>Fri, 31 Jul 2026 01:50:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/315340.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 30 Mar 2013 17:16:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Windows hat einen Haltepunkt ausgelöst - Beschädigung des Heaps on Sat, 30 Mar 2013 17:16:11 GMT]]></title><description><![CDATA[<p>Hab das Problem ungefähr lokalisieren können, aber ich weis nicht was da Schief läuft.<br />
Ich hab da eine Klasse die nen vector für chars enthält, sollte nur dafür sein dass ich mit weniger code bei Winsocks char arrays senden kann. So sieht die Klasse aus:</p>
<pre><code>class Packet
{
private:
	char* tmpstr;
public:

	vector&lt;char&gt; v;

	Packet();
	~Packet();

	void put(char c);
	void clear();
	char* getPacket();
	int size();
	void freeBuffer();

};
</code></pre>
<p>wahrscheinlich liegt das Problem in der Funktion:</p>
<pre><code>char* Packet::getPacket()
{
	if(size()==0)
		return NULL;		

	tmpstr= new char[size()];
	return tmpstr;
}
</code></pre>
<p>Stimmt da was nicht? Ich erstelle ein neues char-array mit der Größe der Anzahl der Elemente im vector, kurz danach wird auf jeden Fall das Array wieder freigegeben mit dieser Funktion:</p>
<pre><code>void Packet::freeBuffer()
{
	delete[] tmpstr;
}
</code></pre>
<p>Die Funktion wird unter anderem im Destruktor aufgerufen.</p>
<p>Hat jemand ne Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2311055</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2311055</guid><dc:creator><![CDATA[Francis123]]></dc:creator><pubDate>Sat, 30 Mar 2013 17:16:11 GMT</pubDate></item><item><title><![CDATA[Reply to Windows hat einen Haltepunkt ausgelöst - Beschädigung des Heaps on Sat, 30 Mar 2013 17:19:42 GMT]]></title><description><![CDATA[<p>Wieso mischst du vector und rohe Arrays? Das ist wirklich sinnlos. Mit <code>&amp;v[0]</code> kommst du an die Rohdaten des Vektors.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2311057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2311057</guid><dc:creator><![CDATA[seldsam]]></dc:creator><pubDate>Sat, 30 Mar 2013 17:19:42 GMT</pubDate></item><item><title><![CDATA[Reply to Windows hat einen Haltepunkt ausgelöst - Beschädigung des Heaps on Sat, 30 Mar 2013 17:22:46 GMT]]></title><description><![CDATA[<p>Ich muss zum senden über Winsocks ein char* übergeben, das ist der einzige Grund für die Benutzung dieser Klasse. Sollte das ganze bisschen einfacher machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2311061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2311061</guid><dc:creator><![CDATA[Francis123]]></dc:creator><pubDate>Sat, 30 Mar 2013 17:22:46 GMT</pubDate></item><item><title><![CDATA[Reply to Windows hat einen Haltepunkt ausgelöst - Beschädigung des Heaps on Sat, 30 Mar 2013 17:27:03 GMT]]></title><description><![CDATA[<p>seldsam schrieb:</p>
<blockquote>
<p>Mit <code>&amp;v[0]</code> kommst du an die Rohdaten des Vektors.</p>
</blockquote>
<p>Also</p>
<pre><code class="language-cpp">class Packet
{
    vector&lt;char&gt; v;
    char* getPacket() { return &amp;v[0]; }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2311065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2311065</guid><dc:creator><![CDATA[seldsam]]></dc:creator><pubDate>Sat, 30 Mar 2013 17:27:03 GMT</pubDate></item><item><title><![CDATA[Reply to Windows hat einen Haltepunkt ausgelöst - Beschädigung des Heaps on Sat, 30 Mar 2013 17:35:33 GMT]]></title><description><![CDATA[<p>@TE:<br />
Selbst wenn das viel einfacher geht, solltest du RAII lernen.<br />
Ressourcen werden im Konstruktor erzeugt und im Destruktor freigegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2311071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2311071</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Sat, 30 Mar 2013 17:35:33 GMT</pubDate></item><item><title><![CDATA[Reply to Windows hat einen Haltepunkt ausgelöst - Beschädigung des Heaps on Sat, 30 Mar 2013 17:39:30 GMT]]></title><description><![CDATA[<p>Wenn, dann bitte auch v.data(). Das funktioniert auch bei leeren Vektoren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2311073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2311073</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Sat, 30 Mar 2013 17:39:30 GMT</pubDate></item><item><title><![CDATA[Reply to Windows hat einen Haltepunkt ausgelöst - Beschädigung des Heaps on Sat, 30 Mar 2013 19:38:52 GMT]]></title><description><![CDATA[<p>Das Problem ist jetzt behoben, obwohl ich nicht weis wieso das Programm bei dem Code vorher nicht ging...</p>
<p>Noch ein Problem: Ich versuche möglichst einfach aus einem char array ein int und ein short für ip Adresse und port Nummer rauszubekommen. Habe es so versucht:</p>
<pre><code>addr.sin_addr.s_addr=*((int*)buffer+4);
</code></pre>
<p>funktioniert irgendwie nicht. Jemand nen Vorschlag?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2311106</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2311106</guid><dc:creator><![CDATA[Francis123]]></dc:creator><pubDate>Sat, 30 Mar 2013 19:38:52 GMT</pubDate></item><item><title><![CDATA[Reply to Windows hat einen Haltepunkt ausgelöst - Beschädigung des Heaps on Sun, 31 Mar 2013 01:13:27 GMT]]></title><description><![CDATA[<blockquote>
<p>Das Problem ist jetzt behoben, obwohl ich nicht weis wieso das Programm bei dem Code vorher nicht ging...</p>
</blockquote>
<p>Dann wär ich mir nicht sicher dass es behoben ist..</p>
<blockquote>
<p>funktioniert irgendwie nicht. Jemand nen Vorschlag?</p>
</blockquote>
<p>Klar funktioniert das - du bekommst doch Zahlen oder ? Nur halt 'zufällige'. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
<p>Mit deiner Variante werden die chars nur als integer neuinterpretiert, das würde also nur gehen wenn die zahlen binär in dem array vorliegen; was du suchst ist eine Konvertierung wie <a href="http://forums.codeguru.com/showthread.php?231054-C-String-How-to-convert-a-string-into-a-numeric-type" rel="nofollow">hier</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2311126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2311126</guid><dc:creator><![CDATA[DarkShadow44]]></dc:creator><pubDate>Sun, 31 Mar 2013 01:13:27 GMT</pubDate></item><item><title><![CDATA[Reply to Windows hat einen Haltepunkt ausgelöst - Beschädigung des Heaps on Sun, 31 Mar 2013 09:20:45 GMT]]></title><description><![CDATA[<p>Die Zahlen sind binär in dem Array, aber irgendwas läuft da falsch.<br />
Zum Beispiel wenn ich zu google verbinde bekomme ich ein array mit 173,194,69,17.<br />
Das ist die IP adresse die ab dem vierten Feld anfängt. Nachdem ichs gespeichert hab in dem struct wird aber nur ausgegeben 0.81.0.0.<br />
Das versteh ich nicht.</p>
<p>Edit: hat den Fehler keiner entdeckt? So muss es richtig sein:</p>
<pre><code>(*(int*)(buffer+4));
</code></pre>
<p>Da müssen Klammern um buffer+4, ich glaub wenn die nicht da sind wird zu dem int pointer 4x die Größe von int hinzu addiert, also 16 Stellen weiter...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2311146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2311146</guid><dc:creator><![CDATA[Francis123]]></dc:creator><pubDate>Sun, 31 Mar 2013 09:20:45 GMT</pubDate></item><item><title><![CDATA[Reply to Windows hat einen Haltepunkt ausgelöst - Beschädigung des Heaps on Sun, 31 Mar 2013 12:19:51 GMT]]></title><description><![CDATA[<blockquote>
<p>hat den Fehler keiner entdeckt? So muss es richtig sein:</p>
</blockquote>
<p>Woher sollen wir denn wissen ob deine Daten an der 4. oder der 16. Stelle liegen ? <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>Und wie hast du jetzt das Problem mit der Heapbeschädigung gelöst ? Ich glaube immer noch dass es gerade nur durch Glück nicht crasht..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2311195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2311195</guid><dc:creator><![CDATA[DarkShadow44]]></dc:creator><pubDate>Sun, 31 Mar 2013 12:19:51 GMT</pubDate></item><item><title><![CDATA[Reply to Windows hat einen Haltepunkt ausgelöst - Beschädigung des Heaps on Sun, 31 Mar 2013 15:27:39 GMT]]></title><description><![CDATA[<p>Ich hab den Teil entfernt wo ich mit new ein char array erstelle. Stattdessen lasse ich mir die Adresse des ersten Elements im Vector zurückgeben:</p>
<pre><code>return &amp;v[0];
</code></pre>
<p>Würde deswegen gerne wissen wie es richtig wäre wenn ich das mit new [] gemacht hätte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2311223</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2311223</guid><dc:creator><![CDATA[Francis123]]></dc:creator><pubDate>Sun, 31 Mar 2013 15:27:39 GMT</pubDate></item></channel></rss>