<?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[Künstliche Bereiche schaffen für Destruktoraufruf]]></title><description><![CDATA[<p>Ich habe folgendes Szenario:</p>
<pre><code class="language-cpp">//Hier ist was
{
	DWORD buffer = 0; // Variable für die Schleife
	for (DWORD i = 0; i &lt; 10; i++)
	{
		// something
	}
}
//Hier gehts weiter
</code></pre>
<p>Ich habe hier nun künstlich einen Bereich um den buffer und die Schleife geschaffen um den Gültigkeitsbereich einzuschränken, damit ich buffer nicht mitschleppe.</p>
<p>1. Ist das Designmist?<br />
2. Wird buffer auch wirklich nach der letzten Klammer zerstört?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/295835/künstliche-bereiche-schaffen-für-destruktoraufruf</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 06:42:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/295835.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 22 Nov 2011 21:11:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Künstliche Bereiche schaffen für Destruktoraufruf on Tue, 22 Nov 2011 21:11:40 GMT]]></title><description><![CDATA[<p>Ich habe folgendes Szenario:</p>
<pre><code class="language-cpp">//Hier ist was
{
	DWORD buffer = 0; // Variable für die Schleife
	for (DWORD i = 0; i &lt; 10; i++)
	{
		// something
	}
}
//Hier gehts weiter
</code></pre>
<p>Ich habe hier nun künstlich einen Bereich um den buffer und die Schleife geschaffen um den Gültigkeitsbereich einzuschränken, damit ich buffer nicht mitschleppe.</p>
<p>1. Ist das Designmist?<br />
2. Wird buffer auch wirklich nach der letzten Klammer zerstört?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147595</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Tue, 22 Nov 2011 21:11:40 GMT</pubDate></item><item><title><![CDATA[Reply to Künstliche Bereiche schaffen für Destruktoraufruf on Tue, 22 Nov 2011 21:16:35 GMT]]></title><description><![CDATA[<p>1. Meiner meinung nach ist das kein designmist<br />
2. ja, aber bei einem DWORD gibt es nicht besonders viel zu zerstören</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147597</guid><dc:creator><![CDATA[*Q* 1]]></dc:creator><pubDate>Tue, 22 Nov 2011 21:16:35 GMT</pubDate></item><item><title><![CDATA[Reply to Künstliche Bereiche schaffen für Destruktoraufruf on Tue, 22 Nov 2011 21:24:33 GMT]]></title><description><![CDATA[<p>Dein ganzes Programm ist künstlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147601</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Tue, 22 Nov 2011 21:24:33 GMT</pubDate></item><item><title><![CDATA[Reply to Künstliche Bereiche schaffen für Destruktoraufruf on Tue, 22 Nov 2011 22:40:58 GMT]]></title><description><![CDATA[<p>Tim06TR schrieb:</p>
<blockquote>
<p>1. Ist das Designmist?</p>
</blockquote>
<p>Da es nur ein DWORD ist, imo ja.<br />
An sowas könnte man nur bei großen Puffern denken<br />
Aber in der Regel kann man den Puffer ja auch manuell leeren.</p>
<p>Ein Beispiel, wo ich schonmal einen zusätzlichen Scope verwende, ist beim Sperren eines Mutexes, damit er nicht länger als nötig gesperrt bleibt.</p>
<p>Tim06TR schrieb:</p>
<blockquote>
<p>2. Wird buffer auch wirklich nach der letzten Klammer zerstört?</p>
</blockquote>
<p>Ja</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147605</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Tue, 22 Nov 2011 22:40:58 GMT</pubDate></item><item><title><![CDATA[Reply to Künstliche Bereiche schaffen für Destruktoraufruf on Tue, 22 Nov 2011 21:54:46 GMT]]></title><description><![CDATA[<p>Ich mach's mit fstreams.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147606</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Tue, 22 Nov 2011 21:54:46 GMT</pubDate></item><item><title><![CDATA[Reply to Künstliche Bereiche schaffen für Destruktoraufruf on Wed, 23 Nov 2011 07:12:57 GMT]]></title><description><![CDATA[<p>zu 2.<br />
Das verkleinert aber nicht unbedingt den genutzen Stack. Wenn man also einen &quot;großes&quot; Objekt auf dem Stack hat (char array etc.) dann wird der benötigte bei den meisten Compilern allokiert wenn die Funktion betreten wird und nicht erst dieser Block...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147666</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 23 Nov 2011 07:12:57 GMT</pubDate></item><item><title><![CDATA[Reply to Künstliche Bereiche schaffen für Destruktoraufruf on Wed, 23 Nov 2011 08:43:20 GMT]]></title><description><![CDATA[<p>Tim06TR schrieb:</p>
<blockquote>
<p>1. Ist das Designmist?</p>
</blockquote>
<p>Vom Design her unnötig. Du führst hier künstliche Scopegrenzen ein, die aber im Programm an sich keinen Unterschied machen. Soll heißen, das Ergebnis ist mit und ohne die Klammern das selbe. Aus Performance-Sicht <em>könnte</em> es einen Unterschied machen, ich bezweifle das aber. Mir ist kein Compiler bekannt, der wegen ein paar Bytes mitten in der Funktion plötzlich Teile des Stacks wieder freigibt.<br />
Zusammengefasst: <strong>Design</strong>mist auf jeden Fall. Premature-Optimization-Mist auch, soweit du nicht nachgewiesen hast, dass das eine DWORD kriegsentscheidend ist und der Compiler da wirklich auch was ändert, wenn du den künstlichen Scope einführst.</p>
<blockquote>
<p>2. Wird buffer auch wirklich nach der letzten Klammer zerstört?</p>
</blockquote>
<p><strong>Nein.</strong> Du hast keinen Zugriff mehr, weil der Compiler dich nicht lässt, d.h. der buffer ist rein syntaktisch aus dem Scope gelaufen. Zerstört wird garnichts, da dein DWORD ein POD ist und faktisch keinen Destruktor besitzt. Soll heißen, es gibt nichts zu zerstören. Die Variable läuft einfach aus dem Scope, ohne dass irgendwas passiert. Irgendwann wird der Speicher auf dem Stack wieder freigegeben, aber das ist eine andere Abstraktionsebene als die Zerstörung eines Objektes. Und wann das ist, liegt beim Compiler, auch ob der Compiler sich diesbezüglich um die Klammern schert. (Siehe oben)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147682</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 23 Nov 2011 08:43:20 GMT</pubDate></item><item><title><![CDATA[Reply to Künstliche Bereiche schaffen für Destruktoraufruf on Wed, 23 Nov 2011 09:13:56 GMT]]></title><description><![CDATA[<p>Ich hatte angenommen, das das DWORD nur als Platzhalter für eine möglicherweise teure Klasse steht, die evtl. sogar andere ressourcen außer speicher hält.</p>
<p>Steht das DWORD bei dir wirklich nur für ein DWORD?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147691</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147691</guid><dc:creator><![CDATA[*Q* 1]]></dc:creator><pubDate>Wed, 23 Nov 2011 09:13:56 GMT</pubDate></item><item><title><![CDATA[Reply to Künstliche Bereiche schaffen für Destruktoraufruf on Wed, 23 Nov 2011 09:04:22 GMT]]></title><description><![CDATA[<p>Das ist kein Designmist, da es mit Design nix zu tun hat.</p>
<p>Da es sich um ein DWORD handelt, ist es auch vollkommen sinnbefreit - und ist mMn. daher als Mist einzustufen.</p>
<p>Sollte es mal was sein, wo die frühere Zerstörung wirklich Sinn macht ... naja, dann macht es halt Sinn, und ist daher auch kein Mist mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147697</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 23 Nov 2011 09:04:22 GMT</pubDate></item><item><title><![CDATA[Reply to Künstliche Bereiche schaffen für Destruktoraufruf on Wed, 23 Nov 2011 17:33:12 GMT]]></title><description><![CDATA[<p>DWORD war nur ein Beispiel.<br />
An Handles habe ich gar nicht gedacht,<br />
aber dort könnte ja auch ein smartpointer stehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147909</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147909</guid><dc:creator><![CDATA[5cript]]></dc:creator><pubDate>Wed, 23 Nov 2011 17:33:12 GMT</pubDate></item><item><title><![CDATA[Reply to Künstliche Bereiche schaffen für Destruktoraufruf on Wed, 23 Nov 2011 18:52:47 GMT]]></title><description><![CDATA[<p>Tim06TR schrieb:</p>
<blockquote>
<p>DWORD war nur ein Beispiel.<br />
An Handles habe ich gar nicht gedacht,<br />
aber dort könnte ja auch ein smartpointer stehen.</p>
</blockquote>
<p>lass mal <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>ist ja nicht so als sei das das erste mal gesagt. manche leute sind hier manchmal etwas ignorant was sowas angeht. da sind das richtige erbsenzähler...</p>
<p>klar macht das für einen scheiss build in type keine unterschiede, aber für komplexe datentypen wäre es schon recht hilfreich zu wissen was passiert und auch dementsprechend sinnvoll das anzuwenden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2147940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2147940</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 23 Nov 2011 18:52:47 GMT</pubDate></item></channel></rss>