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


Anmelden zum Antworten