Problem mit Pointern
-
Hallo,
ich habe ein kleines Programm aufgesetzt, mit dem ich alle Adressen meines Arbeitsspeichers ausgeben kann. Das funktioniert auch.
Wenn ich nun noch über den *-operator den Inhalt der Adressen anzeigen lassen will, stürtzt das Programm ab. Es werden ca. 300-400 Adressen mit Inhalt ausgegeben, dann kommt die Meldung: "bla.exe funktioniert nicht mehr....".Hier der Code. Ich verstehe nicht wo mein Fehler liegt.
#include <stdio.h>
int main(void) { int c; double counter=1; char d=1,*pd=&d; /*char-Pointer auf die Adresse von d, die Start-Adresse*/ c=pd; printf("%X \n",pd); /*erste Speicher-Adresse*/ pd++; while(1) { counter=counter+1.0; if(pd==c) /*wenn die Start-Adresse wieder erreicht ist: break! */ break; printf("%X %d \n",pd,*pd); /*Ausgabe der Adressen nebst Inhalt*/ pd++; counter++; } printf("%.0f",counter); /*Soll die Anzahl der Adressen im Ram ausgeben */ }
Danke im Voraus
raufaser
-
Hi!
Das liegt am Betriebssystem, das seinen Speicher vor unautorisierten Zugriffen schützt.
Um im RAM umherzuwandern bedarf es spezieller, betriebssystemabhängiger Funktionen.
MfG,
B.B.
-
ok, hmm...schade.
Du weisst nicht zufällig, wie ich das unter vista64-bit bewerkstelligen kann?
mfg raufaser
-
Mit einer der Memory Management Functions aus der WinApi möglicher weise.
Genaues kann ich dir leider nicht sagen. Könntest mal im WinApi Forum fragen.
Gruß,
B.B.
-
schau mal hier: http://msdn.microsoft.com/en-us/library/aa366782(VS.85).aspx
aber das wichtigste davon geht nur, wenn du admin bist.
-
Danke, für den link, da werd ich mich mal umsehen.
mfg
raufaser