<?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[Pointer-Story I]]></title><description><![CDATA[<p>Hallooooo,</p>
<p>Ich experimentiere ein wenig mit Pointer.<br />
Nun bin ich auf folgendes Problem gestoßen:</p>
<pre><code class="language-cpp">int main(...) 
{ 
    int* ptr = reinterpret_cast&lt;int*&gt;(0x12345);
    *ptr = 1;
}
</code></pre>
<p>Das ist nicht erlaubt. Aber wieso?<br />
Bitte jetzt nicht beleidigend antworten. Ich versuche das nur zu verstehen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ich hoffe ihr könnt mir das erklären.</p>
<p>Lg Bill Gate´s son</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/248234/pointer-story-i</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 03:33:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/248234.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Aug 2009 22:14:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Pointer-Story I on Fri, 21 Aug 2009 22:14:18 GMT]]></title><description><![CDATA[<p>Hallooooo,</p>
<p>Ich experimentiere ein wenig mit Pointer.<br />
Nun bin ich auf folgendes Problem gestoßen:</p>
<pre><code class="language-cpp">int main(...) 
{ 
    int* ptr = reinterpret_cast&lt;int*&gt;(0x12345);
    *ptr = 1;
}
</code></pre>
<p>Das ist nicht erlaubt. Aber wieso?<br />
Bitte jetzt nicht beleidigend antworten. Ich versuche das nur zu verstehen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ich hoffe ihr könnt mir das erklären.</p>
<p>Lg Bill Gate´s son</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764595</guid><dc:creator><![CDATA[Bill Gate´s son]]></dc:creator><pubDate>Fri, 21 Aug 2009 22:14:18 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Story I on Fri, 21 Aug 2009 22:27:13 GMT]]></title><description><![CDATA[<p>Das ist gültiges C++, es macht nur keinen Sinn <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>Ein Pointer beinhaltet sowas wie eine Speicheradrssse einer anderen Variable. Hier weist du ptr die Adresse 0x12345 zu. Und gibst du Anweisung, an diese Adresse einen int zu schreiben. Aber an diese Adresse darfst du nicht schreiben. Moderene (d.h. seit ungefähr 386er Generation) Betriebssysteme sind - aus guten Gründen - recht pingelig, wenn es darum geht, welches Programm wohin schreiben darf. Ein Programm muss beim Betriebssystem eine Anfrage stellen, wenn es speicher braucht und bekommt dann die Adresse eines Speicherblocks zugewiesen. Da du dir einfach nimmst, was dir nicht gehört, wird dein Programm vom System abgeschossen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764600</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 21 Aug 2009 22:27:13 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Story I on Fri, 21 Aug 2009 22:27:28 GMT]]></title><description><![CDATA[<p>Bill Gate´s son schrieb:</p>
<blockquote>
<p>Das ist nicht erlaubt. Aber wieso?</p>
</blockquote>
<p>Weil es undefiniertes Verhalten hervorruft. Du willst dem Zeiger eine willkürliche Adresse zuweisen und den Zeiger danach dereferenzieren. Woher willst du dir so sicher sein, dass sich dahinter gültiger Speicher verbirgt? Das ist nämlich mit grosser Wahrscheinlichkeit nicht der Fall.</p>
<p>Sag lieber, was du erreichen willst, das geht bestimmt auch besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764601</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 21 Aug 2009 22:27:28 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Story I on Fri, 21 Aug 2009 22:42:05 GMT]]></title><description><![CDATA[<p>Huhu,</p>
<p>danke für eure Antworten.<br />
Also:</p>
<p><strong>1. Programm (Das Versuchstierchen) - <a href="http://VB.Net" rel="nofollow">VB.Net</a></strong></p>
<pre><code>Dim Variable as Integer = 123456

While(True)
Console.WriteLine(Variable)
Sleep(300)
End While
</code></pre>
<p><strong>2. Programm (Der Wertchanger^^) - C++</strong></p>
<pre><code class="language-cpp">int main(...)
{
    int* ptr = reinterpret_cast&lt;int*&gt;(0x12345);
    *ptr = 1;
}
</code></pre>
<blockquote>
<p>Woher willst du dir so sicher sein, dass sich dahinter gültiger Speicher verbirgt?</p>
</blockquote>
<p>Ich habe die Adresse mittels Cheat Engine herausbekommen, hab den Wert von 'Variable' ändern können... Nur will ich das mit dem '2.Programm' auch können.</p>
<blockquote>
<p>Moderene (d.h. seit ungefähr 386er Generation) Betriebssysteme sind - aus guten Gründen - recht pingelig, wenn es darum geht, welches Programm wohin schreiben darf.</p>
</blockquote>
<p>Hört sich logisch an, das heißt ich kann den Wert der Adresse nicht einfach mit Pointern ändern? Brauch ich da was bestimmtes?</p>
<p>Lg Bill Gate´s son</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764608</guid><dc:creator><![CDATA[Bill Gate´s son]]></dc:creator><pubDate>Fri, 21 Aug 2009 22:42:05 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Story I on Fri, 21 Aug 2009 22:53:44 GMT]]></title><description><![CDATA[<p>Unter Windows mit WriteProcessMemory();</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764611</guid><dc:creator><![CDATA[Gilder]]></dc:creator><pubDate>Fri, 21 Aug 2009 22:53:44 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Story I on Fri, 21 Aug 2009 22:57:53 GMT]]></title><description><![CDATA[<p>Bill Gate´s son schrieb:</p>
<blockquote>
<p>Hört sich logisch an, das heißt ich kann den Wert der Adresse nicht einfach mit Pointern ändern? Brauch ich da was bestimmtes?</p>
</blockquote>
<p>Das geht über C++ hinaus. Das musst du mit deinem Betriebssystem aushandeln, ob und wie das erlaubt ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764615</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 21 Aug 2009 22:57:53 GMT</pubDate></item><item><title><![CDATA[Reply to Pointer-Story I on Fri, 21 Aug 2009 23:06:36 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Bill Gate´s son schrieb:</p>
<blockquote>
<p>Hört sich logisch an, das heißt ich kann den Wert der Adresse nicht einfach mit Pointern ändern? Brauch ich da was bestimmtes?</p>
</blockquote>
<p>Das geht über C++ hinaus. Das musst du mit deinem Betriebssystem aushandeln, ob und wie das erlaubt ist.</p>
</blockquote>
<p>hmmm, dann muss ich wohl Papa fragen. Der kennt sich damit GANZ GUT aus.</p>
<pre><code class="language-cpp">WriteProcessMemory();
</code></pre>
<p>Werde ich mir mal anschauen. Danke!</p>
<p><strong>Danke euch</strong>, werde meinem Vater bescheid sagen, dass er euch paar Scheinchen schicken soll.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1764617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1764617</guid><dc:creator><![CDATA[Bill Gate´s son]]></dc:creator><pubDate>Fri, 21 Aug 2009 23:06:36 GMT</pubDate></item></channel></rss>