<?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[TIdText und TIdAttachment Speicher wieder freigeben]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe in einer Methode folgende Speicherreservierung:</p>
<pre><code class="language-cpp">m_pPlaintext = new TIdText(m_pMessage-&gt;MessageParts,m_pStringListHTML);
m_pPlaintext-&gt;ContentType=&quot;text/plain&quot;;

m_pHTML = new TIdText(m_pMessage-&gt;MessageParts,m_pStringListHTML);
m_pHTML-&gt;ContentType=&quot;text/html&quot;;

m_pHinweisBild = new TIdAttachment(m_pMessage-&gt;MessageParts,
                 asEmailbenachrichtigungsPfad + &quot;\\Beispiel.jpg&quot;);
</code></pre>
<p>diesen reservierten Speicherplatz versuche ich am ende der Methode durch folgende Befehle wieder freizugeben:</p>
<pre><code class="language-cpp">delete m_pHinweisBild;
delete m_pPlaintext;
delete m_pHTML;
</code></pre>
<p>Doch genau an dieser Stelle wirft das Programm mir eine Exception.<br />
Kann mir einer sagen, wie ich diesen Speicher wieder freigeben kann??</p>
<p>Vielen Dank für die Antworten</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/155532/tidtext-und-tidattachment-speicher-wieder-freigeben</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 20:56:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/155532.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 07 Aug 2006 09:57:25 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to TIdText und TIdAttachment Speicher wieder freigeben on Mon, 07 Aug 2006 09:57:25 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe in einer Methode folgende Speicherreservierung:</p>
<pre><code class="language-cpp">m_pPlaintext = new TIdText(m_pMessage-&gt;MessageParts,m_pStringListHTML);
m_pPlaintext-&gt;ContentType=&quot;text/plain&quot;;

m_pHTML = new TIdText(m_pMessage-&gt;MessageParts,m_pStringListHTML);
m_pHTML-&gt;ContentType=&quot;text/html&quot;;

m_pHinweisBild = new TIdAttachment(m_pMessage-&gt;MessageParts,
                 asEmailbenachrichtigungsPfad + &quot;\\Beispiel.jpg&quot;);
</code></pre>
<p>diesen reservierten Speicherplatz versuche ich am ende der Methode durch folgende Befehle wieder freizugeben:</p>
<pre><code class="language-cpp">delete m_pHinweisBild;
delete m_pPlaintext;
delete m_pHTML;
</code></pre>
<p>Doch genau an dieser Stelle wirft das Programm mir eine Exception.<br />
Kann mir einer sagen, wie ich diesen Speicher wieder freigeben kann??</p>
<p>Vielen Dank für die Antworten</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112084</guid><dc:creator><![CDATA[skluge]]></dc:creator><pubDate>Mon, 07 Aug 2006 09:57:25 GMT</pubDate></item><item><title><![CDATA[Reply to TIdText und TIdAttachment Speicher wieder freigeben on Mon, 07 Aug 2006 10:10:43 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Schau in der Indy-Doku nach, ob du diese Objecte überhaupt selbst freigeben must.<br />
Denn ich vermute das sie bei m_pMessage registriert werden und von dort auch aus gelöscht werden.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112093</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 07 Aug 2006 10:10:43 GMT</pubDate></item><item><title><![CDATA[Reply to TIdText und TIdAttachment Speicher wieder freigeben on Mon, 07 Aug 2006 10:47:20 GMT]]></title><description><![CDATA[<p>Hi akari,</p>
<p>hab eben mal nachgesehen und folgendes gefunden:</p>
<blockquote>
<p>TIdText are used as collection items in a TIdMessageParts collection.</p>
</blockquote>
<p>Bestätigt das deine Meinung? Also so wie ich dich verstanden habe, wird der Speicher der z.B. durch ...</p>
<pre><code class="language-cpp">= new TIdAttachment(
m_pMessage-&gt;MessageParts,asEmailbenachrichtigungsPfad + &quot;\\Beispiel.jpg&quot;);
</code></pre>
<p>reserviert wird mit</p>
<pre><code class="language-cpp">delete m_pMessage
</code></pre>
<p>wieder freigegeben, oder??</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112117</guid><dc:creator><![CDATA[skluge]]></dc:creator><pubDate>Mon, 07 Aug 2006 10:47:20 GMT</pubDate></item><item><title><![CDATA[Reply to TIdText und TIdAttachment Speicher wieder freigeben on Mon, 07 Aug 2006 10:57:38 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ja das deutet darauf hin das der Speicher von dem Container verwaltet wird, du also die untergeordneten Items nicht selber freigeben must.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112128</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 07 Aug 2006 10:57:38 GMT</pubDate></item><item><title><![CDATA[Reply to TIdText und TIdAttachment Speicher wieder freigeben on Mon, 07 Aug 2006 10:59:19 GMT]]></title><description><![CDATA[<p>Denn ich habe gerade mal den Quickie auf folgender Seite angesehen:</p>
<p><a href="http://www.marquardtnet.info/cecke/index.htm" rel="nofollow">http://www.marquardtnet.info/cecke/index.htm</a></p>
<p>zum Thema <strong>Versenden einer eMail mit den Indy-Komponenten (TidSMTP)</strong>;</p>
<p>Da gibt der Autor auch wieder den entsprechenden Speicher frei:</p>
<blockquote>
<p>Aufräumen:</p>
<p>delete body;<br />
delete Att;</p>
</blockquote>
<p>Deswegen wundert es mich, dass bei mir der delete - Befehl nicht funktioniert?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112129</guid><dc:creator><![CDATA[skluge]]></dc:creator><pubDate>Mon, 07 Aug 2006 10:59:19 GMT</pubDate></item><item><title><![CDATA[Reply to TIdText und TIdAttachment Speicher wieder freigeben on Mon, 07 Aug 2006 11:08:17 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>dann liegt der Auslöser für die Speicherverletzung aber nicht in deinem Codeauszug, sondern woanders.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112135</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 07 Aug 2006 11:08:17 GMT</pubDate></item><item><title><![CDATA[Reply to TIdText und TIdAttachment Speicher wieder freigeben on Mon, 07 Aug 2006 12:59:41 GMT]]></title><description><![CDATA[<p>Hier mal meine komplette Methode:</p>
<pre><code class="language-cpp">{

   AnsiString asEmailbenachrichtigungsPfad;
   TIdText *m_pPlaintext  = new TIdText(m_pMessage-&gt;MessageParts,m_pStringListHTML);
   TIdText *m_pHTML       = new TIdText(m_pMessage-&gt;MessageParts,m_pStringListHTML);

   m_pPlaintext-&gt;ContentType=&quot;text/plain&quot;;
   m_pHTML-&gt;ContentType=&quot;text/html&quot;;

   asEmailbenachrichtigungsPfad = mainprogramm-&gt;einstellung-&gt;
                                  getEmailBenachrichtigungsPfad();

   TIdAttachment  *m_pHinweisBild  = new TIdAttachment(
   m_pMessage-&gt;MessageParts,asEmailbenachrichtigungsPfad + &quot;\\zeiterfassung.jpg&quot;);

   m_pStringListHTML-&gt;LoadFromFile(asEmailbenachrichtigungsPfad + &quot;\\EMAIL.html&quot;);

   m_pMessage-&gt;MessageParts-&gt;Add();

//Emaileinstellungen
      m_pSMTP-&gt;Host      = mainprogramm-&gt;einstellung-&gt;getBenachrichtigungEmailHost();
      m_pSMTP-&gt;UserId    = mainprogramm-&gt;einstellung-&gt;getBenachrichtigungEmailUserID();
      m_pSMTP-&gt;Port      = mainprogramm-&gt;einstellung-&gt;getBenachrichtigungEmailPort().ToInt();
      m_pSMTP-&gt;Password  = mainprogramm-&gt;einstellung-&gt;getBenachrichtigungEmailPasswort();

      m_pMessage-&gt;Recipients-&gt;EMailAddresses = m_asEmailAdresse;//mainprogramm-&gt;einstellung-&gt;getBenachrichtigungsEmailAdresse();

   //Emailangaben
   m_pMessage-&gt;From-&gt;Text = &quot;TimeCollect&quot;;
   m_pMessage-&gt;Subject = asEmailBetreff;

   //Hier wird der StringListe der Bodytext zugewiesen und in die Message-Komponente
   //kopiert.
   m_pMessage-&gt;Body = m_pStringListHTML;

   //Versenden der Email
   m_pSMTP-&gt;Connect();
   m_pSMTP-&gt;Send(m_pMessage);
   m_pSMTP-&gt;Disconnect();

   //Aufräumen
   m_pStringListHTML-&gt;Clear();
   m_pMessage-&gt;Clear();

   delete m_pHinweisBild;
   delete m_pPlaintext;
   delete m_pHTML;

   DeleteFile(asEmailbenachrichtigungsPfad + &quot;\\EMAIL.html&quot;);

}
</code></pre>
<p>Vielleicht findet man jetzt den Fehler <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/1112227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112227</guid><dc:creator><![CDATA[skluge]]></dc:creator><pubDate>Mon, 07 Aug 2006 12:59:41 GMT</pubDate></item><item><title><![CDATA[Reply to TIdText und TIdAttachment Speicher wieder freigeben on Mon, 07 Aug 2006 13:10:28 GMT]]></title><description><![CDATA[<p>Hallo</p>
<pre><code class="language-cpp">//Aufräumen
   delete m_pHinweisBild;
   delete m_pPlaintext;
   delete m_pHTML;

   delete m_pStringListHTML;
   delete m_pMessage;
</code></pre>
<p>/Edit : In Annahme das die beiden letzeren Pointer überhaupt auf gültige Instanzen gezeigt haben.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112234</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112234</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Mon, 07 Aug 2006 13:10:28 GMT</pubDate></item><item><title><![CDATA[Reply to TIdText und TIdAttachment Speicher wieder freigeben on Mon, 07 Aug 2006 13:25:23 GMT]]></title><description><![CDATA[<p>die letzten beiden Komponenten werden im Destruktor gekillt.<br />
Aber die drei zuvor lösen eine Exception aus!<br />
Ich habe keine Ahnung, warum die sich nicht löschen lassen.</p>
<p>Meine Frage ist eigenlich nur, ob es ausreicht die TIdMessage-Komponente zu löschen und ob dann die TIdText und TIdAttachment auch mitgelöscht werden?<br />
Oder entsteht dadurch ein Speicherloch?</p>
<p>gibt es in solchen Fällen eine besondere Weise wie ich den Speicher wieder frei geben muss?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1112247</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1112247</guid><dc:creator><![CDATA[skluge]]></dc:creator><pubDate>Mon, 07 Aug 2006 13:25:23 GMT</pubDate></item></channel></rss>