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.
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: