<?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[der heap macht stress ...]]></title><description><![CDATA[<p>Hey Leute,<br />
ich als Neuling im c++ geschäft habe da so meine Probleme. Ich habe eine Klasse geschrieben die mir emails per smtp verschicken kann. also ganz normaler socket krams. falls die email nicht heraus geht so er es gleich noch ml versuchen. daher habe ich das eigentliche verschicken in einen eigenen pthread gelegt.</p>
<p>Das sieht ungfähr so aus in Email.cpp</p>
<pre><code>...

void Email::send(char* txt) { // übergibt den text und startet den thread
 mailtxt = txt;
 pthread_t sendEmail;
 pthread_create(&amp;sendEmail, NULL, sendEmailThread, (void*)this);
}

void* sendEmailThread(void* ptr) { // nicht member-func von Email!!
 Email *email = (EmailHandler *) ptr; // so komme ich an notwendige daten
...schicken der email
und wenn erfolgreich -&gt; thread terminieren

 return 0;
}
</code></pre>
<p>Nur Leider beim beenden bricht mein Programm ab mit der Fehlermeldung</p>
<pre><code>*** glibc detected *** free(): invalid pointer: 0x08054170 ***
Aborted
</code></pre>
<p>Warum? Macht der heap stress?? aber wieso???<br />
Gruss david</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/183555/der-heap-macht-stress</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 09:33:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/183555.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 06 Jun 2007 08:06:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to der heap macht stress ... on Wed, 06 Jun 2007 08:23:30 GMT]]></title><description><![CDATA[<p>Hey Leute,<br />
ich als Neuling im c++ geschäft habe da so meine Probleme. Ich habe eine Klasse geschrieben die mir emails per smtp verschicken kann. also ganz normaler socket krams. falls die email nicht heraus geht so er es gleich noch ml versuchen. daher habe ich das eigentliche verschicken in einen eigenen pthread gelegt.</p>
<p>Das sieht ungfähr so aus in Email.cpp</p>
<pre><code>...

void Email::send(char* txt) { // übergibt den text und startet den thread
 mailtxt = txt;
 pthread_t sendEmail;
 pthread_create(&amp;sendEmail, NULL, sendEmailThread, (void*)this);
}

void* sendEmailThread(void* ptr) { // nicht member-func von Email!!
 Email *email = (EmailHandler *) ptr; // so komme ich an notwendige daten
...schicken der email
und wenn erfolgreich -&gt; thread terminieren

 return 0;
}
</code></pre>
<p>Nur Leider beim beenden bricht mein Programm ab mit der Fehlermeldung</p>
<pre><code>*** glibc detected *** free(): invalid pointer: 0x08054170 ***
Aborted
</code></pre>
<p>Warum? Macht der heap stress?? aber wieso???<br />
Gruss david</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299771</guid><dc:creator><![CDATA[davidwal]]></dc:creator><pubDate>Wed, 06 Jun 2007 08:23:30 GMT</pubDate></item><item><title><![CDATA[Reply to der heap macht stress ... on Wed, 06 Jun 2007 08:25:16 GMT]]></title><description><![CDATA[<p>Nur ne Idee...</p>
<p>dein Objekt, das du mit this an pthread_create übergibst, liegt das auf dem Heap<br />
oder auf dem Stack?</p>
<p>Da du ja einen neuen Thread startest reicht, das Objekt auf dem Stack nicht aus, da<br />
der ursprungliche Thread den ja wieder überschreibt und deswegen hat er dann nen invalid pointer und stürzt ab.</p>
<p>Sieht für mich jedenfalls so aus...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299780</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 06 Jun 2007 08:25:16 GMT</pubDate></item><item><title><![CDATA[Reply to der heap macht stress ... on Wed, 06 Jun 2007 08:39:33 GMT]]></title><description><![CDATA[<p>wie das mit dem Speicher genau aussieht weiss ich auch nicht. Dachte, dass der thread auf dem heap geht ... warum auch sonst der Fehler mit free().</p>
<p>Wie bekomme ich das ursp.Object auf den Heap und somit weg vom Stack? Mit new vielleicht? Verstehe aber was Du meinst <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1299796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299796</guid><dc:creator><![CDATA[davidwal]]></dc:creator><pubDate>Wed, 06 Jun 2007 08:39:33 GMT</pubDate></item><item><title><![CDATA[Reply to der heap macht stress ... on Wed, 06 Jun 2007 08:43:49 GMT]]></title><description><![CDATA[<p>Zeig doch einfach mal, wie du Email::send benutzt, und wo das Email-Objekt herkommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299800</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 06 Jun 2007 08:43:49 GMT</pubDate></item><item><title><![CDATA[Reply to der heap macht stress ... on Wed, 06 Jun 2007 09:02:13 GMT]]></title><description><![CDATA[<p>Genau: mit new...</p>
<p>Die Fehlermeldung mit free kann ja dadurch entstehen, dass du in<br />
deinem Objekt z.B. nen std::vector hast/hattest, der intern (wahrscheinlich) mit<br />
malloc alloziiert und er da erstmals beim Löschen nen Segmentation fault kriegst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299828</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 06 Jun 2007 09:02:13 GMT</pubDate></item><item><title><![CDATA[Reply to der heap macht stress ... on Wed, 06 Jun 2007 09:20:32 GMT]]></title><description><![CDATA[<p>Also, erst mal vorweg: komme aus der javawelt und mache erst seit 4 monaten c++ mit dem gcc unter linux.</p>
<p>ich habe eine fassaden-klasse (singleton) wo ich die Klasse Email aufrufe.<br />
einfach mit:</p>
<pre><code>Email emailHandler;
</code></pre>
<p>Der konstruktor liesst aus einem config file die benötigten werte (zb smtp-server) und setzt diese als member-vars.<br />
Zu testzwecken startet der konst. die funktion Email::send(&quot;blabal&quot;);(siehe oben)<br />
und die endEmailThread liegt ebenfalls in der Email.cpp. Ist aber kein Member von class Email.</p>
<p>Wenn ich</p>
<pre><code>Email *pEmail = new Email();
</code></pre>
<p>in der Fassadenklasse setze<br />
,sieht der Abbruch so aus</p>
<pre><code>*** glibc detected *** double free or corruption (!prev): 0x08054610 ***
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1299847</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299847</guid><dc:creator><![CDATA[davidwal]]></dc:creator><pubDate>Wed, 06 Jun 2007 09:20:32 GMT</pubDate></item><item><title><![CDATA[Reply to der heap macht stress ... on Wed, 06 Jun 2007 12:12:57 GMT]]></title><description><![CDATA[<p>Problem gelöst:<br />
musste nur einige pointer auf NULL prüfen und<br />
vor abbruch des threads auf NULL setzen. Dann<br />
hatte ich noch eine Speicherleak - jetzt auch<br />
weg <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="😉"
    /> und habe Email per Extern global in<br />
meiner app. gemacht. trotzdem DANKE an alle</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1299972</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1299972</guid><dc:creator><![CDATA[davidwal]]></dc:creator><pubDate>Wed, 06 Jun 2007 12:12:57 GMT</pubDate></item><item><title><![CDATA[Reply to der heap macht stress ... on Wed, 06 Jun 2007 15:10:46 GMT]]></title><description><![CDATA[<p>Hmmmm das klingt mir aber nicht nach einer Lösung sondern nach einer Umgehung des Problems ... und danach, als ob Du nochmal Dein Programm(design) zum Thema &quot;Ownership&quot; durchschauen solltest....</p>
<p>Vielleicht irre ich mich aber auch.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1300147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1300147</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 06 Jun 2007 15:10:46 GMT</pubDate></item><item><title><![CDATA[Reply to der heap macht stress ... on Wed, 06 Jun 2007 15:48:09 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Hmmmm das klingt mir aber nicht nach einer Lösung sondern nach einer Umgehung des Problems ... und danach, als ob Du nochmal Dein Programm(design) zum Thema &quot;Ownership&quot; durchschauen solltest....</p>
</blockquote>
<p>V.a. wundert mich das &quot;trotzdem&quot; in der Dankformel des OP da das Problem genau das ist was CSpille beschrieben hatte...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1300170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1300170</guid><dc:creator><![CDATA[Gast++]]></dc:creator><pubDate>Wed, 06 Jun 2007 15:48:09 GMT</pubDate></item></channel></rss>