Pointer-Adresse; Umrechnung

  • C++

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Bartosz.

    Pointer-Adresse; Umrechnung

    Hallo zusammen,

    ich habe eine Frage zu einem Sachverhalt, der sich nicht ganz in meinen Neuronen kondensieren lässt. Ich habe gerade schon mit @Gonger96 gesprochen, aber es ist besser, das im Forum zu klären.

    Eine 32-bit-Maschine hat max. 4GB RAM, weil 2^32 bit d.h. 4294967295 bit /1024/1024/1024 = exakt 4GB.

    Ein 32-bit-Pointer kann 2^32 Byte adressieren, weil ich ja 2^32 Adressen habe und pro Adresse 1 Byte im RAM.

    Wenn der Zeiger bspw. lautet 146562F656(h), dann ist das ja die Adresse, also bin ich an Stelle des wie vielten Bytes (hoch im RAM)?
    (1*16^9+4*16^8+6*16^7+5*16^6+6*16^5+2*16^4+15*16^3+6*16^2+5*16^1+6*16^0) /8/32 ?

    Ich frage nur, weil ich mir den Spaß gemacht habe, das mal auszurechnen und ich dann feststellen musste, dass ich gar nicht so viel RAM verbaut habe xD
    An die Neulinge: Nutzt Option Strict On und Option Infer Off. Dadurch kommt ihr mit Datentypumwandlungen nicht durcheinander und der Code verbessert sich um Einiges! Solche Fehler à la Dim Beispiel As Integer = "123" können nicht mehr passieren.
    Ich weiß nicht ob das relevant ist, aber wenn du einen Zeiger hast, dann zeigt dieser Zeiger auf eine Adresse im virtuellen Arbeitsspeicher des Prozesses den der Prozess zugewiesen bekommen hat.
    Dafür müsstest du in erster Linie erstmal in der Lage sein, virtuelle Adressen in die physische Adresse zu transformieren.

    Bin mir da aber wie gesagt selbst nicht 100% sicher.

    stackoverflow.com/questions/40…dress-to-physical-address
    @seh Achso, das ist gar nicht die physische... na, dann kann ich mich lange wundern. OK erledigt ^^ mir ging's nur darum, wieso ich das nicht hinbekomme.
    An die Neulinge: Nutzt Option Strict On und Option Infer Off. Dadurch kommt ihr mit Datentypumwandlungen nicht durcheinander und der Code verbessert sich um Einiges! Solche Fehler à la Dim Beispiel As Integer = "123" können nicht mehr passieren.