Un puntero de C ++ representó unos pocos bytes de memoria?

Un puntero de C ++ representó unos pocos bytes de memoria?

Conclusión: en función del modo de compilación es modo de compilación de 64 bits o de 32 bits (nota que la máquina y no directamente relacionados con el número de bits)

  • Compilado en el modo de 64 bits, la memoria puntero para el tamaño es de 8 bytes
  • En el modo de compilación de 32 bits, la memoria del puntero para el tamaño de 4 bytes

Experimento: (entorno experimental vs2019)

  • modo de compilación de 64 bits
    Aquí Insertar imagen Descripción

    modo de compilación de 64 bits, sizeof devuelve el tipo unsigned long long, ocupa 8 bytes

  • modo de compilación de 32 bits
    Aquí Insertar imagen Descripción

    modo de compilación de 32 bits, devoluciones sizeof unsgined tipo int, ocupa 4 bytes

Análisis:
estudiantes atento puede encontrar qué int * * Stu tamaño y tipo de puntero como él?

  • Debido a que el valor del puntero en sí es la dirección de memoria, que es el número de bytes ocupada por el programa pueden acceder al espacio de direcciones de memoria, como modo de compilación de 32 bits, un máximo de direccionamiento de 32 bits, 2 ^ 32 B = 4 GB, el valor del puntero es 0x00000000 - 0xFFFFFFFF valor dentro del rango. Por lo tanto la cantidad de memoria ocupada por el propio puntero y el tipo de datos se refiere a la nada.
  • Del mismo modo, el modo de compilación de 64 bits, ideales de direccionamiento de 64 bits, que es 2 ^ 64 B, esto es un gran valor, pero no puede alcanzar una gran capacidad de memoria tal físico, CPU para lograr solamente capacidad de direccionamiento de 64 bits se aumentará los costes y la complejidad del sistema de traducción de direcciones, Windows y Linux se han restringido, sólo la dirección virtual de 48, 2 ^ 48 = B 256 TB. Pero el número de bytes de memoria para los punteros o 8 (sólo en Windows y Linux, la baja efectiva sólo 48).

discusión adicional de 1:
Por lo tanto, la CPU capacidad de direccionamiento en el final y lo que de ello?
Y la respuesta es el número de bus de direcciones relacionadas.

  • CPU 16
    principios de CPU de 16 bits, un procesamiento de datos CAN de 16 bits (2 bytes). Esta vez, la industria de la computación se encuentra todavía en la etapa inicial, no hay PC en todos los hogares, no existe el concepto de la dirección virtual, o el programa se ejecuta directamente en la memoria física. Un procesador típico de 16 bits es el Intel 8086, que tiene un bus de datos 16, bus de direcciones 20, la capacidad de dirección de 2 ^ 20 B = 1 MB
  • CPU 32
    con el progreso de la industria informática, ha habido una CPU de 32 bits, se puede manejar de 32 bits (4 bytes) de datos. En esta ocasión se propuso el concepto de la dirección virtual, y se aplica a la CPU y el sistema operativo, el mapeo de direcciones virtuales y las direcciones físicas por ellos conjuntamente. Un procesador típico de 32 bits es el Intel 80386 y el Intel Pentium 4 (Pentium 4): la anchura del bus de datos y bus de direcciones son de 32 bits 80386, la capacidad de direccionamiento de 4 GB; Pentium bus 4 dirección de anchura es de 36 bits, buscan el teórico la capacidad de dirección de 64 GB.
  • La CPU 64
    es ahora la CPU de 64 bits puede llegar a millones de hogares, que puede manejar un conjunto de datos de 64 bits (8 bytes). Un procesador típico de 64 bits es el Intel Core i3, i5, i7 y similares, dirección de ancho de bus de la misma es de aproximadamente 40 a 50.

Vale la pena señalar que el apoyo mediana gran parte del espacio de direcciones y la CPU no está directamente relacionado, la mediana es el número de bits de registros de la CPU, se puede decir que el número de bus de datos, una sola medida de la capacidad de datos de proceso. En general, con el bus de datos del bus de direcciones aumento voluntad, será también mayor, para apoyar un mayor espacio de direcciones.

Una discusión adicional 2:
short, int, largo, largo a largo en el modo de 32 bits y el modo compilado 64-compilado, lo que representa el número de bytes?
Conclusión: La misma!

corto En t largo largo largo __int64
# 32 2 4 4 8 8
# 64 2 4 4 8 8

experimento:

  • # 64
    Aquí Insertar imagen Descripción
  • # 32
    Aquí Insertar imagen Descripción
Publicado 24 artículos originales · ganado elogios 0 · Vistas 409

Supongo que te gusta

Origin blog.csdn.net/qq_18138105/article/details/105209406
Recomendado
Clasificación