2011-07-27 21 views
7

Mi computadora tiene un cambio de 32 bits a 64 bits, y mi sistema operativo es de 64 bits Windows 7. Creo que el puntero en el sistema operativo de 64 bits debe ser de 64 bits - 8 bytes. Sin embargo, cuando uso sizeof() en C++ para obtener el tamaño de un punto, el resultado es 4.¿Cuál es el tamaño del puntero en una computadora de 64 bits en C++?

¿Por qué 4?

+0

código por favor ... – swegi

+7

¿Está seguro de que compiló su programa en 64bits? – gregseth

+0

'sizeof (¿qué?)'. ¿Qué estás pasando al operador sizeof? –

Respuesta

15

Su ejecutable todavía se está compilando como un binario de 32 bits. Intente compilarlo como un proyecto de 64 bits.

El sistema operativo no hace ninguna diferencia en el tamaño interno de un puntero si el procesador está emulando el programa dentro de un entorno de 32 bits ...

En VS2010, la cabeza hacia el gestor de configuración, hacer una nueva entrada bajo 'plataforma' y seleccione x64 (por lo general es la única otra opción existe)

EDIT: también, asegúrese de que está pasando una void* al operador sizeof().

+1

Gracias por su respuesta, me ayuda mucho. – 2power10

4

¿Está compilando en el modo de 64 bits o en el de 32 bits? En Visual Studio, debe seleccionar el tipo de CPU de la compilación y la predeterminada puede ser de 32 bits.

Además, asegúrese de hacerlo sizeof(void*).

Cuestiones relacionadas