<?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[Variablen]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn ich eine Variable int x; deklariere</p>
<p>wer legt den Speicher an(Compiler, linker, Betriebssystem,Prozessor, ..) und wo wird die Variable angelegt ( ARbeitspeicher, stack, Festplatte... )</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/244791/variablen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 04:00:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244791.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 05 Jul 2009 20:45:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Variablen on Sun, 05 Jul 2009 20:45:02 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn ich eine Variable int x; deklariere</p>
<p>wer legt den Speicher an(Compiler, linker, Betriebssystem,Prozessor, ..) und wo wird die Variable angelegt ( ARbeitspeicher, stack, Festplatte... )</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737642</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737642</guid><dc:creator><![CDATA[Peder]]></dc:creator><pubDate>Sun, 05 Jul 2009 20:45:02 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen on Sun, 05 Jul 2009 20:48:44 GMT]]></title><description><![CDATA[<p>Betriebssystm im Arbeitsspeicher</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737647</guid><dc:creator><![CDATA[AntworterZuSpäterSTund]]></dc:creator><pubDate>Sun, 05 Jul 2009 20:48:44 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen on Sun, 05 Jul 2009 20:51:32 GMT]]></title><description><![CDATA[<blockquote>
<p>Ich werde kommen, dich anfallen, dich ins Bett werfen, in dich eindringen. Du wirst frieren, schwitzen, zittern und beben. In freudiger Erwartung: Dein Grippe</p>
</blockquote>
<p>Wie es bei Windows ist, weiss ich nicht ganz genau, aber der Wertespeicher für die Variablen liegt in einem bestimmten Segment, besondere Datentypendeklarationen wie beispielsweise &quot;const&quot; werden in einem Extra-Segment abgelegt (ReadOnly)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737650</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737650</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sun, 05 Jul 2009 20:51:32 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen on Sun, 05 Jul 2009 20:51:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn du eine Varibale deklarierst wird gar kein Speicher angelegt.<br />
Erst wenn du sie definierst wird dein int x; auf dem Stack angelegt, dass passiert wenn du die Variable initialisierst.<br />
Der Stack kann je nach Zustand deines Programmes im BS, im Arbeitssspeicher oder auf der Festplatte liegen. Braucht dich aber nicht interessieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737651</guid><dc:creator><![CDATA[kein Frickler]]></dc:creator><pubDate>Sun, 05 Jul 2009 20:51:43 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen on Sun, 05 Jul 2009 21:03:41 GMT]]></title><description><![CDATA[<blockquote>
<p>wenn du eine Varibale deklarierst wird gar kein Speicher angelegt</p>
</blockquote>
<p>aber wenn ich doch cout&lt;&lt;x mache dann gibt er doch einen rubbish wert aus.</p>
<p>Woher soll der kommen , wenn nicht aus dem Speicher ? außerdem<br />
kann man sich ja mit &amp;x die Speicheradresse von x ausgeben lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737656</guid><dc:creator><![CDATA[peder]]></dc:creator><pubDate>Sun, 05 Jul 2009 21:03:41 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen on Sun, 05 Jul 2009 21:08:26 GMT]]></title><description><![CDATA[<p>Wenn du nur eine Variable initialisiert, zeigt dessen Zeiger auf einen zufälligen Speicherbereich. Dementsprechend kommt der Wert dabei raus...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737657</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Sun, 05 Jul 2009 21:08:26 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen on Sun, 05 Jul 2009 21:12:28 GMT]]></title><description><![CDATA[<p>Richtig, dies passiert dann nach der <strong>Definition</strong>. Für globale Variablen wird das vor main gemacht und nach main wieder weg geräumt. Mit lokalen Variablen sieht es etwas anders aus, die werden wahrscheinlich erst an Ort und Stelle erzeugt.<br />
Du solltest dir mal den Unterschied von Deklaration/Definition ansehen, dann dürfte es auch etwas klarer werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737659</guid><dc:creator><![CDATA[kein Frickler]]></dc:creator><pubDate>Sun, 05 Jul 2009 21:12:28 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen on Mon, 06 Jul 2009 05:23:48 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int main()
{
   int x;
}
</code></pre>
<p>Hier wird x sowohl deklariert als auch definiert. Es wird Speicher für x reserviert, sobald das Programm beim Ausführen an der Instruktion ankommt. An Fällen, wo eine reine Deklaration (also ohne Definition) von eingebauten Datentypen vorkommt, fällt mir auf Anhieb nur die Deklaration eines Bezeichners ein, dessen Definition in einer anderen Quelltextdatei stattfindet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737701</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 06 Jul 2009 05:23:48 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen on Mon, 06 Jul 2009 05:47:06 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>Es wird Speicher für x reserviert, sobald das Programm beim Ausführen an der Instruktion ankommt.</p>
</blockquote>
<p>Nicht unbedingt. Normalerweise wird für alle lokalen Variablen einer Funktion der Speicher reserviert, sobald die Ausführung der Funktion begonnen wird.</p>
<blockquote>
<p>An Fällen, wo eine reine Deklaration (also ohne Definition) von eingebauten Datentypen vorkommt, fällt mir auf Anhieb nur die Deklaration eines Bezeichners ein, dessen Definition in einer anderen Quelltextdatei stattfindet.</p>
</blockquote>
<p>Schlüsselwort <code>extern</code> sorgt für eine Deklaration ohne Definition. Des Weiteren sind statische Membervariablen einer Klasse erstmal nur deklariert und müssen getrennt davon definiert werden (Ausnahme: Integrale statische Member können sofort definiert werden).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737707</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 06 Jul 2009 05:47:06 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen on Mon, 06 Jul 2009 06:16:15 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Nicht unbedingt. Normalerweise wird für alle lokalen Variablen einer Funktion der Speicher reserviert, sobald die Ausführung der Funktion begonnen wird.</p>
</blockquote>
<p>Das überrascht mich ...<br />
Ich war felsenfest davon überzeugt, daß bei:</p>
<pre><code class="language-cpp">void func()
{
   viele Instruktionen ...

   if(bedingung)
       return;

   int x;

   noch mehr Instruktionen ...
}
</code></pre>
<p>x zum Beispiel nur für !bedingung angelegt wird ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737711</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 06 Jul 2009 06:16:15 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen on Mon, 06 Jul 2009 11:03:27 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Nicht unbedingt. Normalerweise wird für alle lokalen Variablen einer Funktion der Speicher reserviert, sobald die Ausführung der Funktion begonnen wird.</p>
</blockquote>
<p>Das überrascht mich ...<br />
Ich war felsenfest davon überzeugt, daß bei:</p>
<pre><code class="language-cpp">void func()
{
   viele Instruktionen ...

   if(bedingung)
       return;
 
   int x;

   noch mehr Instruktionen ...
}
</code></pre>
<p>x zum Beispiel nur für !bedingung angelegt wird ...</p>
</blockquote>
<p>ja - mit optimierungen sollte das wohl so sein - nat nur, wenn es sich lohnt (die konstruktion der variable aufwendig genug ist und/oder das objekt relativ groß ist)</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737856</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737856</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 06 Jul 2009 11:03:27 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen on Mon, 06 Jul 2009 13:56:00 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>nat nur, wenn es sich lohnt (die konstruktion der variable aufwendig genug ist und/oder das objekt relativ groß ist)</p>
</blockquote>
<p>Konstruktion != Speicherreservierung. Ein Speicheranfordern auf dem Stack dürfte eigentlich vertretbar sein.</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p>(Ausnahme: Integrale statische Member können sofort definiert werden).</p>
</blockquote>
<p>Du meinst wohl integrale statische konstante Member. <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/1737955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737955</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 06 Jul 2009 13:56:00 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen on Mon, 06 Jul 2009 14:14:47 GMT]]></title><description><![CDATA[<p>Üblicherweise wird beim Aufruf einer Funktion ein Stackframe erzeugt und beim Verlassen wieder freigegeben, wobei das nur durch Verschieben eines Stack-Ende-Pointers geschieht. D.h. schonmal, dass &quot;add stackpointer, 4&quot; und &quot;add stackpointer, 1234&quot; keinen Laufzeitunterschied macht.</p>
<p>Da der Compiler weiß, wieviel Speicher die Variablen der Funktion auf dem Stack benötigen, kann er Konstanten für die Menge nötigen Speicherplatzes einsetzen. D.h. widerum, dass jede weitere Allokation im Verlauf der Funktion eine weitere Anweisung bedeuten würde, ein Erhöhen der Anzahl am Anfang der Funktion jedoch nicht.</p>
<p>Das ist die übliche Vorgehensweise, zumindest auf x86 Maschinen, weshalb Allokation auf dem Stack auch sehr schnell ist und nicht von der Menge des benötigten Platzes abhängt. Konstruktion ist dann wieder eine andere Geschichte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737970</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Mon, 06 Jul 2009 14:14:47 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen on Mon, 06 Jul 2009 20:00:44 GMT]]></title><description><![CDATA[<p>Das bedeutet also, daß bei:</p>
<pre><code class="language-cpp">void func(bool wahr)
{
   if(wahr)
   {
      char c = 'A';
      std::cout &lt;&lt; c;
   }
   else
   {
      double d = 1.0;
      std::cout &lt;&lt; d;
   }
}
</code></pre>
<p>immer gleich viel Speicher auf dem Stack, nämlich für c und für d, reserviert wird?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1738193</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1738193</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 06 Jul 2009 20:00:44 GMT</pubDate></item><item><title><![CDATA[Reply to Variablen on Tue, 07 Jul 2009 04:43:56 GMT]]></title><description><![CDATA[<p>Für wahr, c und d, ja.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1738290</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1738290</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 07 Jul 2009 04:43:56 GMT</pubDate></item></channel></rss>