Wenn die Adresse eines Zeigers 64 Bit ist, warum erscheint er beim Ausdruck als 6 Byte?

8
%Vor%

Das gibt mir 0x7fffbd8ce900 , was nur 6 Bytes ist. Sollte es 8 Bytes (64bit) sein?

    
mko 17.07.2012, 03:33
quelle

2 Antworten

13

Obwohl ein Zeiger 64 Bit ist, unterstützen aktuelle Prozessoren eigentlich nur 48 Bit , also die oberen zwei Bytes einer Adresse sind immer entweder 0000 oder (aufgrund der Vorzeichenerweiterung) FFFF.

Wenn in der Zukunft 48 Bit nicht mehr ausreichen, können neue Prozessoren die Unterstützung für virtuelle 56-Bit- oder 64-Bit-Adressen hinzufügen, und vorhandene Programme können den zusätzlichen Speicherplatz nutzen, da sie bereits 64- Bit verwenden. Bitzeiger.

    
Wyzard 17.07.2012 03:38
quelle
6

Das bedeutet nur, dass die ersten zwei Bytes Null sind (was übrigens derzeit für x86-64 Chips garantiert ist - aber das bedeutet in diesem Fall nichts, da Ihr Zeiger nicht initialisiert ist). %p darf führende Nullen genauso abschneiden wie jeder andere numerische Typ. %016p ist jedoch nicht. Dies sollte gut funktionieren:

%Vor%     
John Calsbeek 17.07.2012 03:36
quelle

Tags und Links