• Ich habe mal zwei Fragen zu Pointer.

    1. Woher weiß die CPU wo sich der Inhalt eines Pointers im RAM befindet?
    2. Wie groß kann der Inhalt eines Pointers sein.

    Währe nett wenn mich aufklären könntet.

  • Ich habe mal zwei Fragen zu Pointer.

    1. Woher weiß die CPU wo sich der Inhalt eines Pointers im RAM befindet?
    2. Wie groß kann der Inhalt eines Pointers sein.

    Währe nett wenn mich aufklären könntet.


    Zu 1.
    Weil der Inhalt der Zeigervariablen die Speicheradresse enthält.

    Zu 2.
    Auf 32bit Systemen sind es immer 32bit, auf 64bit Systemen 64bit.


    Gruß
    Greenhorn


  • Weil der Inhalt der Zeigervariablen die Speicheradresse enthält.


    Das ist die einfache Erklärung. Willst du auch die komplexere mit virtuellen und physischen Speicheradressen und Memory Mapping?

  • vielen dank erstmal

    zu 2 etwas
    was bringt es wenn ich dann ein char erstelle der nur 8 bit braucht bleiben dann die restlichen bits leer?
    oder verwechsle ich hier grade was?

  • oder verwechsle ich hier grade was?

    Ja. ;)

    Dein 8bit char befindet sich, sagen wir an der Speicheradresse 0x12345678 (32bit OS), ist aber nur 8 bit breit (ein Byte).
    Bei einer Zeichenkette wäre der nächste char an der Adresse 0x12345686 (0x12345678 + 8 ) 0x12345679 (0x12345678 + 1).
    (Ein short wäre 16 bit breit und ein int wäre 32 bit breit.)
    Die Adresse ist aber wie gesagt IMMER 32 bit bei einem 32bit OS und 64 bit bei einem 64 bit OS.

    EDIT:
    Anbindung des Arbeitsspeichers


    Gruß


    4 Mal editiert, zuletzt von Greenhorn (9. März 2012 um 09:37)

  • Hi,


    währe es nicht an 0x12345679 ?


    Das ist natürlich vollkommen richtig. ;)
    Speicheradressen sind in Bytes und nicht in Bits.
    Jetzte komme ich auch schon durcheinander ...
    (Wenn die Tabletten nicht wären, hätte ich jetzt sagen können: Das war wohl ein "Bit" zuviel gestern abend ... :D )


    Gruß
    Greenhorn


  • eine frage habe ich doch noch.

    warum kann eine 64 bit architektur mehr als 32 Gigabyte haben

    nach meiner rechnung währe dies das maximum an speicheradressen die erstellt werden können
    die größte speicheradresse kann doch nur 0xFFFFFFFF sein, oder nicht?

    0xFFFFFFFF hex in dec = 4294967295 // anzahl der speicheradressen im dezimalsystem
    4294967295*64 = 274877906880 // anzahl der möglichen bits, da jede speicheradress 64 bit haben kann.
    274877906880 bit in gigabyte = 32 gigabyte // ?? warumm steht dann bei wikipedia das es bis zu 16 exbibyte sein können


    mache ich wieder ein denkfehler :(

  • Die größte Zahl in 64bit ist 0xFFFFFFFFFFFFFFFF = 2^64-1, daher ist das die hächste Speicheradresse bei einem 64bit-System. Da byteweise addressiert wird, sind also 2^64 Bytes ansprechbar.