Porque la dirección de 6 bytes es solo la dirección virtual (desplazamiento de la dirección física real). En la arquitectura física (por ejemplo, X86), la memoria se divide en porciones que pueden ser direccionadas por un único registro de índice sin cambiar un selector de segmento de 16 bits. En el modo real de la CPU X86, un segmento siempre usa un selector de segmentos de 16 bits (2 bytes), que el Sistema operativo decidirá dinámicamente desde el principio cuando el programa comenzó a ejecutarse (es decir, se está creando un proceso real))
Por lo tanto, si la variable tiene la dirección de 48 bits 0x7fffbd8ce900, y su programa de tener el selector segmento compensado 08af, y la dirección real de la variable es (0x08af < < 48) + 0x7fffbd8ce900 = 0x08af7fffbd8ce900, que es 64 -poco.
lectura adicional pls gire a: x86 memory segmentation
0x00007fffdb8ce900 – xiefei
El valor que está imprimiendo es basura, ya que no inicializa 'ptr'. No hay ninguna razón para suponer que contiene una dirección válida. –