<?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[Speicherzellen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich suche nach einer Möglichkeit die Adresse von Speicherzellen in einer int Variablen zu speichern.</p>
<p>Die Adresse über cout auszugeben klappt wunderbar, aber sie bspw in einer Variablen x zu speichern klappt nicht.</p>
<p>int a;</p>
<p>cout &lt;&lt; &amp;a;</p>
<p>_____________</p>
<p>int a, x;</p>
<p>x = &amp;a; /* funktioniert nicht */</p>
<p>Verbessert mich bitte, falls ich falsch liege:), &amp;a ist die Adresse des Zeigers, der auf a zeigt, vom Typ Zeiger also. Also ist x = &amp;a einfach eine Typverletzung. Andererseits wird die Adresse durch eine Hexadezimalzahl beschrieben, die im Prinzip schon ein Integer ist.</p>
<p>Wie kann ich jetzt die Adresse von beliebigen Variablen in anderen Integervariablen speichern?</p>
<p>Als i-tüpfelchen würde ich gerne noch auf beliebige Speicherzellen meines Hauptspeichers Einsicht erhalten. Also auch auf welche, die mein Programm nicht nutzt. Falls mir jemand mit C / C++ Code und/oder einer Erklärung helfen könnte, wäre ich sehr dankbar:)</p>
<p>Gruß, Josef.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/286566/speicherzellen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 20:42:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/286566.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 12 May 2011 09:35:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Speicherzellen on Thu, 12 May 2011 09:36:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich suche nach einer Möglichkeit die Adresse von Speicherzellen in einer int Variablen zu speichern.</p>
<p>Die Adresse über cout auszugeben klappt wunderbar, aber sie bspw in einer Variablen x zu speichern klappt nicht.</p>
<p>int a;</p>
<p>cout &lt;&lt; &amp;a;</p>
<p>_____________</p>
<p>int a, x;</p>
<p>x = &amp;a; /* funktioniert nicht */</p>
<p>Verbessert mich bitte, falls ich falsch liege:), &amp;a ist die Adresse des Zeigers, der auf a zeigt, vom Typ Zeiger also. Also ist x = &amp;a einfach eine Typverletzung. Andererseits wird die Adresse durch eine Hexadezimalzahl beschrieben, die im Prinzip schon ein Integer ist.</p>
<p>Wie kann ich jetzt die Adresse von beliebigen Variablen in anderen Integervariablen speichern?</p>
<p>Als i-tüpfelchen würde ich gerne noch auf beliebige Speicherzellen meines Hauptspeichers Einsicht erhalten. Also auch auf welche, die mein Programm nicht nutzt. Falls mir jemand mit C / C++ Code und/oder einer Erklärung helfen könnte, wäre ich sehr dankbar:)</p>
<p>Gruß, Josef.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062119</guid><dc:creator><![CDATA[josefh]]></dc:creator><pubDate>Thu, 12 May 2011 09:36:35 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherzellen on Thu, 12 May 2011 09:39:00 GMT]]></title><description><![CDATA[<p>Zeiger:</p>
<pre><code class="language-cpp">int i = 3;
   int * p = &amp;i; //p enthaelt die Adresse von i
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2062123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062123</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 12 May 2011 09:39:00 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherzellen on Thu, 12 May 2011 09:41:44 GMT]]></title><description><![CDATA[<blockquote>
<p>Wie kann ich jetzt die Adresse von beliebigen Variablen in anderen Integervariablen speichern?</p>
</blockquote>
<p>Wie kommst du auf die Idee, dass ein Integer ausreicht? Schließlich ist der Wertebereich begrenzt. Auf aktuellen Systemen geht das mit den üblichen Größen für Integers jedenfalls <strong>nicht</strong>.</p>
<p>edit: Und die allseits beliebte, weil wichtige, Frage: Wozu?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062125</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 12 May 2011 09:41:44 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherzellen on Thu, 12 May 2011 09:45:07 GMT]]></title><description><![CDATA[<p>Ja, dann eben Longinteger. Hab vor nicht allzulanger Zeit mit C++ angefangen.<br />
Danke Tachyon btw:)</p>
<p>Jetzt würde mich gerade noch interessieren, wie ich bspw die beliebige Speicherzelle 0x0015FF02 auslesen könnte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062126</guid><dc:creator><![CDATA[josefh]]></dc:creator><pubDate>Thu, 12 May 2011 09:45:07 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherzellen on Thu, 12 May 2011 09:48:25 GMT]]></title><description><![CDATA[<p>josefh schrieb:</p>
<blockquote>
<p>Ja, dann eben Longinteger. Hab vor nicht allzulanger Zeit mit C++ angefangen.<br />
Danke Tachyon btw:)</p>
<p>Jetzt würde mich gerade noch interessieren, wie ich bspw die beliebige Speicherzelle 0x0015FF02 auslesen könnte.</p>
</blockquote>
<p>So ohne Weiteres gar nicht. Das Betriebssystem weiß, welcher Speicher Deinem Programm gehört, und welcher nicht. Wenn Dein Programm versucht, auf Speicher zuzugreift welches ihm nicht gehört, gibts eine read/write-access-violation.<br />
Betriebssysteme bieten allerdings APIs für sowas an. Solange Du nicht Sattelfest in C++ bist, solltest Du die Finger davon lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062127</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 12 May 2011 09:48:25 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherzellen on Thu, 12 May 2011 09:48:47 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int *p = (int*)0x0015FF02;
cout &lt;&lt; *p;
</code></pre>
<p>Aber ich wette ein Bier, daß dein BS dir auf die Finger klopfen wird. <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/2062128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062128</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Thu, 12 May 2011 09:48:47 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherzellen on Thu, 12 May 2011 09:52:17 GMT]]></title><description><![CDATA[<p>ich weis nicht was du über hauptspeicher verstehst aber<br />
ich glaub du meinst auch das?</p>
<pre><code>int *ptr=new int(0);
</code></pre>
<p>ein zeiger der im freien speicher eine int reserviert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062133</guid><dc:creator><![CDATA[sebi91]]></dc:creator><pubDate>Thu, 12 May 2011 09:52:17 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherzellen on Thu, 12 May 2011 10:12:59 GMT]]></title><description><![CDATA[<p>Lass mich Raten: Du kennst die Adresse einer Variable eines Spiels und willst sie modifizieren. Aber so nicht!</p>
<p>EDIT: <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/25894">@Caligulaminus</a> Was soll der C-Cast?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062141</guid><dc:creator><![CDATA[EOutOfResources]]></dc:creator><pubDate>Thu, 12 May 2011 10:12:59 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherzellen on Thu, 12 May 2011 10:31:34 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>EDIT: <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/25894">@Caligulaminus</a> Was soll der C-Cast?</p>
</blockquote>
<p>Geht's auch ohne? Ich hab's nicht probiert.<br />
Falls Du auf C-Cast vs. C++-Casts anspielen willst: Die gezeigte Angelegenheit ist doch eh hochgradiger Unsinn. Wie soll man denn eine willkürlich gewählte Adresse &quot;richtig&quot; casten? <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062150</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062150</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Thu, 12 May 2011 10:31:34 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherzellen on Thu, 12 May 2011 11:10:07 GMT]]></title><description><![CDATA[<p>EOutOfResources schrieb:</p>
<blockquote>
<p>Lass mich Raten: Du kennst die Adresse einer Variable eines Spiels und willst sie modifizieren. Aber so nicht!</p>
</blockquote>
<p>Höhö. Also, wenn du das machen möchtest, musst du die entsprechenden Funktionen des OS's benutzen. Unter Windows, glaube ich, ist es relativ einfach, auf den Speicher eines anderen Prozesses zuzugreifen, solange du diesen ansprechen kannst.</p>
<p>Caligulaminus schrieb:</p>
<blockquote>
<p>Geht's auch ohne? Ich hab's nicht probiert.<br />
Falls Du auf C-Cast vs. C++-Casts anspielen willst: Die gezeigte Angelegenheit ist doch eh hochgradiger Unsinn. Wie soll man denn eine willkürlich gewählte Adresse &quot;richtig&quot; casten? <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="😃"
    /></p>
</blockquote>
<p>Gar nicht. Aber es gibt <code>void</code> -Zeiger, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062162</guid><dc:creator><![CDATA[Glühbirne]]></dc:creator><pubDate>Thu, 12 May 2011 11:10:07 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherzellen on Thu, 12 May 2011 11:42:15 GMT]]></title><description><![CDATA[<p>bei linux ist das einfach mit pointer<br />
kann man sogar beim os selber manipulieren</p>
<p>unter windows musst du die api benutzen<br />
und das programm explizit angeben<br />
sonst gibts keinen zugriff auf den speicher<br />
soweit ich weis</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062172</guid><dc:creator><![CDATA[sebi91]]></dc:creator><pubDate>Thu, 12 May 2011 11:42:15 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherzellen on Thu, 12 May 2011 11:44:02 GMT]]></title><description><![CDATA[<p>Caligulaminus schrieb:</p>
<blockquote>
<p>EOutOfResources schrieb:</p>
<blockquote>
<p>EDIT: <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/25894">@Caligulaminus</a> Was soll der C-Cast?</p>
</blockquote>
<p>Geht's auch ohne? Ich hab's nicht probiert.<br />
Falls Du auf C-Cast vs. C++-Casts anspielen willst: Die gezeigte Angelegenheit ist doch eh hochgradiger Unsinn. Wie soll man denn eine willkürlich gewählte Adresse &quot;richtig&quot; casten? <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="😃"
    /></p>
</blockquote>
<p>reinterpret_cast&lt;ptrdiff_t&gt;(p)<br />
Mir hat aber jemand mal etwas von gewissen Dingen erzählt, die der Standard nicht garantiert, und dazu könnte auch dieser Cast hin und zurück gehören.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062173</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Thu, 12 May 2011 11:44:02 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherzellen on Thu, 12 May 2011 13:23:19 GMT]]></title><description><![CDATA[<p>josefh schrieb:</p>
<blockquote>
<p>Hallo,<br />
Verbessert mich bitte, falls ich falsch liege:), &amp;a ist die Adresse des Zeigers, der auf a zeigt, vom Typ Zeiger also.</p>
</blockquote>
<p>Nein! &amp;a gibt die Speicheradresse zurück, in welcher sich a befindet. Du hast doch da im Moment überhaupt keinen Zeiger?</p>
<p>sebi91 schrieb:</p>
<blockquote>
<p>ich weis nicht was du über hauptspeicher verstehst aber<br />
ich glaub du meinst auch das?</p>
<pre><code>int *ptr=new int(0);
</code></pre>
<p>ein zeiger der im freien speicher eine int reserviert</p>
</blockquote>
<p>Wie kann er so auf eine beliebige Adresse im Speicher zugreifen? Er greift so über den Zeiger auf den Speicher zu, den du mit new int(0) angefordert und mit Null initialisiert hast. Er wollte aber auf eine beliebige Speicheradresse zugreifen, die seinem Programm nicht &quot;gehört&quot;. Klar Zeiger braucht er dazu, aber mit diesem noch Speicher zu reservieren ist total unnötig, wobei das wie ja auch schon erläutert wurde, so sowieso nicht funktioniert.</p>
<p>Lg freeG</p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062231</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062231</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Thu, 12 May 2011 13:23:19 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherzellen on Thu, 12 May 2011 17:59:39 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/26914">@josefh</a><br />
unter windows:<br />
read <a href="http://msdn.microsoft.com/en-us/library/ms680553%28v=vs.85%29.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms680553(v=vs.85).aspx</a><br />
write <a href="http://msdn.microsoft.com/en-us/library/ms681674%28VS.85%29.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ms681674(VS.85).aspx</a><br />
hat bei mir immer gut geklappt</p>
<p>wie gesagt unter linux reicht ein zeiger mit der ziel adresse<br />
und wenn du den richtigen speicher erwischt schmirt es ab ^^</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/23000">@fr33g</a><br />
wir wissen ja nicht einmal welches os</p>
<p>sebi91 schrieb:</p>
<blockquote>
<p>bei linux ist das einfach mit pointer<br />
kann man sogar beim os selber manipulieren</p>
<p>unter windows musst du die api benutzen<br />
und das programm explizit angeben<br />
sonst gibts keinen zugriff auf den speicher<br />
soweit ich weis</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2062407</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062407</guid><dc:creator><![CDATA[sebi91]]></dc:creator><pubDate>Thu, 12 May 2011 17:59:39 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherzellen on Thu, 12 May 2011 18:02:44 GMT]]></title><description><![CDATA[<p>Nimm std::uintptr_t aus cstdint.<br />
Der Typ ist dazu da, Speicheraddressen als normalen Integer zu halten.<br />
Von und zu Pointer wird mit einem reinterpret_cast&lt;&gt; konvertiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062410</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Thu, 12 May 2011 18:02:44 GMT</pubDate></item><item><title><![CDATA[Reply to Speicherzellen on Thu, 12 May 2011 18:30:31 GMT]]></title><description><![CDATA[<p>sebi91 schrieb:</p>
<blockquote>
<p>wie gesagt unter linux reicht ein zeiger mit der ziel adresse</p>
</blockquote>
<p>Auch Linux betreibt virtuelle Speicherverwaltung. Die selben Speicheradressen zweier verschiedener Prozesse bedeuten unterschiedlichen physischen Speicher (sie werden auf unterschiedliche Pages gemappt). Wenn der andere Prozess keinen shared memory exportiert, kommst du nicht an seinen Speicher, und dann auch nur an die Teile, die er exportiert. In diesem Fall bedeuten im Zweifel verschiedene Adressen verschiedener Prozesse den selben physischen Speicher. Als root über /dev/mem, wenn der Kernel das bereitstellt, kann man da mehr machen, aber ein einfacher Zeiger, um in anderen Prozessen herumzufuhrwerken? Nein.</p>
<p>Unter DOS, wenn kooperatives Multitasking im Real-Mode betrieben wurde, da konnte man solche Dinge machen, aber der Protected-Mode ist inzwischen bald 30 Jahre alt. Du kannst davon ausgehen, dass dieser Trick nirgends mehr funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2062427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2062427</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Thu, 12 May 2011 18:30:31 GMT</pubDate></item></channel></rss>