Du bist nicht angemeldet.

Werbeanzeige

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

1

09.07.2014, 14:22

Zugriff auf RAM mit Zeigern

Hallo zusammen

ich interessiere mich aktuell für Zeiger.

Ich möchte mit c++ Zeiger mit einer bestimmten Adresse auf den RAM zugreifen.
Jedoch klappt das nicht so, wie ich es mir vorstelle.

hier meine Version

C-/C++-Quelltext

1
2
3
    int *ip_Pointer = (int*)(0x00000001);

    cout << "Wert :" << *ip_Pointer << endl;



Das Beispiel sieht zwar albern aus, aber es geht nur ums Prinzip!!!
Ich möchte in diesem Fall auf den Speicher mit der Adresse (0x00000001) zugreifen, und den Wert lesen.
Jedoch klappt es nicht (Zugriffsverletzung an Pos ....). Ich bin mir auch nicht sicher, welchen Typ ich nehmen soll (int)?
war der Ansatz korrekt, oder komplett falsch.

NachoMan

Community-Fossil

Beiträge: 3 909

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

09.07.2014, 14:24

Was soll das denn bringen?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

dot

Supermoderator

Beiträge: 9 850

Wohnort: Graz

  • Private Nachricht senden

3

09.07.2014, 14:25

Was du vor hast funktioniert heutzutage so leider nicht...

http://en.wikipedia.org/wiki/Virtual_memory ;)

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

4

09.07.2014, 14:27

Danke, für den Link.
Ich werde es mir durchlesen.

Bringen soll das gar nichts, es geht nur ums Prinzip. :D

Beiträge: 1 239

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

5

09.07.2014, 14:38

Das funktioniert seit MSDOS Zeiten nicht mehr so.
Dafür gibt es Speicherschutz, das wäre sonst ziemlich unsicher und unstabil. Außerdem gibt es nicht bloß "eine Adresse" in der etwas steht. Es gibt einen virtuellen Adressraum, einen Physischen und auf x86 auch noch einen Linearen. Dabei überschneiden sich die Adressen im virtuellen Adressraum in der Regel. Das heißt jedes Programm hat einen eigenen virtuellen Adressraum. Auf den physikalischen Adressraum kann man gar nicht ohne Weiteres zugreifen. Außerdem beginnt auch der physische Adressraum nicht bei 0, sondern der RAM wird vom in der Regel an anderen Adressen eingeblendet, denn es gibt auch noch andere Dinge im physischen Adressraum für verschiedene Hardware usw.

Kurz und gut, was du machen willst geht so nicht. Eingeschränkt für einzelne Prozesse kannst du dir bestimmt Zugriff über die WinAPI auf dessen virtuellen Adressraum verschaffen. Ich glaube aber nicht, dass das zu etwas Sinnvollen führen würde. Vollen Zugriff auf den RAM wird vermutlich aller höchstens dann möglich sein, wenn du direkt als Treiber im Kernelmode arbeitest.

EDIT: Zu langsam...

Werbeanzeige