<?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[Speicherfrage zu nicht-modalen Dialog]]></title><description><![CDATA[<p>Hallo, mich würde mal etwas über die Speichererzeugung und Freigabe von nicht-modalen Dialogen interessieren.</p>
<p>Wenn ich einen modalen Dialog erzeuge, mache ich das folgendermaßen. Der Speicher wird dann ja sofort nach der Initialisierung wieder freigegeben:</p>
<pre><code class="language-cpp">CTestDialog *dlgTest;
dlgTest = new CTestDialog();
dlgTest-&gt;DoModal();
delete [] dlgTest;
</code></pre>
<p>Bei einem nicht-modalen Dialog, würde ich das folgendermaßen machen:</p>
<pre><code class="language-cpp">CTestDialog *dlgTest;
dlgTest = new CTestDialog();
dlgTest-&gt;Create(IDD_TEST, this);
</code></pre>
<p>Nun kann ich aber nicht gleich</p>
<pre><code class="language-cpp">delete [] dlgTest;
</code></pre>
<p>danach folgen lassen, da sonst der Dialog sofort geschlossen wird. Muss ich den Speicher für diesen Dialog freigeben und wenn ja wie und wo im Programmablauf? <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/57932/speicherfrage-zu-nicht-modalen-dialog</link><generator>RSS for Node</generator><lastBuildDate>Tue, 02 Jun 2026 16:39:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/57932.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 09 Dec 2003 07:05:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speicherfrage zu nicht-modalen Dialog on Tue, 09 Dec 2003 07:05:42 GMT]]></title><description><![CDATA[<p>Hallo, mich würde mal etwas über die Speichererzeugung und Freigabe von nicht-modalen Dialogen interessieren.</p>
<p>Wenn ich einen modalen Dialog erzeuge, mache ich das folgendermaßen. Der Speicher wird dann ja sofort nach der Initialisierung wieder freigegeben:</p>
<pre><code class="language-cpp">CTestDialog *dlgTest;
dlgTest = new CTestDialog();
dlgTest-&gt;DoModal();
delete [] dlgTest;
</code></pre>
<p>Bei einem nicht-modalen Dialog, würde ich das folgendermaßen machen:</p>
<pre><code class="language-cpp">CTestDialog *dlgTest;
dlgTest = new CTestDialog();
dlgTest-&gt;Create(IDD_TEST, this);
</code></pre>
<p>Nun kann ich aber nicht gleich</p>
<pre><code class="language-cpp">delete [] dlgTest;
</code></pre>
<p>danach folgen lassen, da sonst der Dialog sofort geschlossen wird. Muss ich den Speicher für diesen Dialog freigeben und wenn ja wie und wo im Programmablauf? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/411543</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/411543</guid><dc:creator><![CDATA[Dressman1981]]></dc:creator><pubDate>Tue, 09 Dec 2003 07:05:42 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherfrage zu nicht-modalen Dialog on Tue, 09 Dec 2003 08:09:11 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>leg den Dialog als Membervariable der Aufrufenden Klasse an. Im Destruktor der Klasse kannst du ihn dann löschen. Eine andere Methode wäre, wenn du den Dialog einfach im Stack erzeugst (also ohne &quot;new&quot; und &quot;*&quot;).</p>
<p>Exceeder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/411574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/411574</guid><dc:creator><![CDATA[Exceeder]]></dc:creator><pubDate>Tue, 09 Dec 2003 08:09:11 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherfrage zu nicht-modalen Dialog on Tue, 09 Dec 2003 08:22:16 GMT]]></title><description><![CDATA[<p>und delete [] ist nur für arrays.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/411586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/411586</guid><dc:creator><![CDATA[array]]></dc:creator><pubDate>Tue, 09 Dec 2003 08:22:16 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherfrage zu nicht-modalen Dialog on Tue, 09 Dec 2003 08:56:40 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/840">@Exceeder</a>: Danke für die Antwort! Na ja, ich hab gelesen, dass man Dialoge usw. im Heap anlegen sollte. Wie würde das aussehen, wenn ich den Dialog im Stack erzeuge?<br />
So in etwa:</p>
<pre><code class="language-cpp">CTestDialog dlgTest;  
dlgTest.Create(IDD_TEST, this);
</code></pre>
<p>Dann brauche ich ja auch nicht den Speicher wieder freigeben, oder?<br />
Komisch war halt nur, dass ich davor meine Dialoge nicht nach meiner ersten Methode initialisiert habe. Das hat dann, nachdem ich mein Programm und die entsprechenden Dialoge öfter aufgerufen habe, zu Speicherproblemen und zum Absturz geführt.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/11409">@array</a>: Reicht es also, wenn ich</p>
<pre><code class="language-cpp">delete dlgTest;
</code></pre>
<p>schreiben würde bzw. hat es irgendwelche nachteiligen oder keine Auswirkungen wenn ich die eckigen Klammern hinter den delete-Befehl setze?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/411610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/411610</guid><dc:creator><![CDATA[Dressman1981]]></dc:creator><pubDate>Tue, 09 Dec 2003 08:56:40 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherfrage zu nicht-modalen Dialog on Tue, 09 Dec 2003 09:56:24 GMT]]></title><description><![CDATA[<p>genau so ist es richtig. wenn du delete[] benutzt ist das Verhalten undefiniert. Es wird zwar vielleicht funktionieren, ist aber falsch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/411658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/411658</guid><dc:creator><![CDATA[array]]></dc:creator><pubDate>Tue, 09 Dec 2003 09:56:24 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherfrage zu nicht-modalen Dialog on Tue, 09 Dec 2003 10:14:55 GMT]]></title><description><![CDATA[<p>Die sauberste Lösung ist meiner Meinung nach folgende :</p>
<pre><code>CTestDialog *dlgTest; 
dlgTest = new CTestDialog(); 
dlgTest-&gt;Create(IDD_TEST, this);
</code></pre>
<p>Im Klassenassi fügst Du beim CTestDialog folgende Funktion hinzu :</p>
<pre><code>void CTestDialog::PostNcDestroy() 
{
	delete this;
	CDialog::PostNcDestroy();
}
</code></pre>
<p>So wird dat Dingens gekillt wenn es geschlossen wird und als C++ - Entwickler ist man sowieso glücklicher, wenn man sich selbst kümmert. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Grüße</p>
<p>BOA</p>
]]></description><link>https://www.c-plusplus.net/forum/post/411674</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/411674</guid><dc:creator><![CDATA[BOA]]></dc:creator><pubDate>Tue, 09 Dec 2003 10:14:55 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherfrage zu nicht-modalen Dialog on Tue, 09 Dec 2003 10:53:57 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/11409">@array</a>: Ok, danke...bei mir hat es halt auch so mit der eckigen Klammer funktioniert, da ich nicht wusste, dass sich diese Angabe auf Arrayelemente bezieht.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/488">@BOA</a>: Das sieht aber nach einer eleganten Lösung aus! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
Mal noch ne weitere Frage an dich:<br />
Würdest du es für sinnvoll erachten, dass ich auch bei meinen modalen Dialogen die delete-Anweisung in die PostNcDestroy-Funktion aufnehme, oder ist es ok wie ich es am Anfang meines Postings beschrieben habe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/411705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/411705</guid><dc:creator><![CDATA[Dressman1981]]></dc:creator><pubDate>Tue, 09 Dec 2003 10:53:57 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherfrage zu nicht-modalen Dialog on Tue, 09 Dec 2003 12:17:00 GMT]]></title><description><![CDATA[<p>Die modalen Dialoge bearbeite ich wie Du es machst.</p>
<p>Dialog aufgemacht<br />
Dialog zugemacht<br />
Dialog gelöscht<br />
Dialog erledigt</p>
<p>Finde ich persönlich am schönsten, weil ich an <strong>einer</strong> Quellcodestelle mich um alles kümmere, von der Geburt bis zum Tod. <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>Ob das Speicher- oder Performance-Nach oder Vorteile bringt vermag ich net zu sagen ( glaube ich aber net wirklich ).</p>
<p>Beste Grüße</p>
<p>BOA</p>
]]></description><link>https://www.c-plusplus.net/forum/post/411765</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/411765</guid><dc:creator><![CDATA[BOA]]></dc:creator><pubDate>Tue, 09 Dec 2003 12:17:00 GMT</pubDate></item></channel></rss>