Hex-Adressen?



  • Hi!

    Was bedeuten denn eigentlich diese Hex-Adressen z.b: 0x02? Auf was greift er da zu?
    Gibt es eine Tabelle in der man diese Adressen nachschlagen kann?

    MfG Spacemuck



  • Spacemuck schrieb:

    Hi!

    Was bedeuten denn eigentlich diese Hex-Adressen z.b: 0x02? Auf was greift er da zu?
    Gibt es eine Tabelle in der man diese Adressen nachschlagen kann?

    MfG Spacemuck

    Es gibt für jedes Betriebssystem Adressen mit Bedeutung. Wo zum Beispiel der Heap anfängt, das Text Segment oder das Data Segment.

    0x02 wird aber selten sinnvoll sein. So eine Adresse entsteht wenn du zum Beispiel folgendes hast:

    class Point {
    public:
       void setX(short X) { x = X; }
       void setY(short Y) { y = Y; }
    private:
       short x, y;
    }
    
    void foo(Point * p) {
     p->setY(2);
    }
    

    Wenn nun der Funktion foo ein NULL Zeiger übergeben wird, dann versucht das Programm auf Adresse 0x02 zu schreiben und du bekommst einen Fehler mit dieser Adresse.

    Dieses Beispiel gilt aber nur auf ausgewählten Platformen.



  • Spacemuck schrieb:

    Hi!

    Was bedeuten denn eigentlich diese Hex-Adressen z.b: 0x02? Auf was greift er da zu?
    Gibt es eine Tabelle in der man diese Adressen nachschlagen kann?

    MfG Spacemuck

    robisch?



  • Spacemuck schrieb:

    Gibt es eine Tabelle in der man diese Adressen nachschlagen kann?

    die Tabelle wird von der MMU verwaltet. Aber das ist sicher nicht das was du erwartest 🙂

    Bei DOS (oder anderen Realmode OSs) konnte man auf den kompletten Speicher zugreifen und so an bestimmten Stellen den Kernel, Treiber oder andere Programme ansteuern. Heutzutage werden die Prozesse aber gegenseitig abgeschirmt (Protected Mode) und ein Prozess sieht nur virtuelle Adressen, die von der MMU dann in reale Adressen umgewandelt werden.

    Das hat Vorteile: Ein böser Prozess kann keine anderen Prozesse überschreiben; Man kann Speicher auf die Festplatte auslagern etc.

    btw. sieht 0x02 nach keiner gültigen Adresse aus 🙂



  • thx für die Antworten.

    Naja das mit 0x02 war nur ein Beispiel, ist mir halt so durch den Kopf gegangen.

    @TravisG
    Nix Robisch - Nix Andre. Ich halt alias Spacemuck.

    MfG


Log in to reply