Какой размер указателя в 64-битном компьютере в C ++? - PullRequest
7 голосов
/ 27 июля 2011

Мой компьютер изменяется с 32 бит на 64 бит, а моя операционная система - 64-битная Windows 7. Я думаю, что указатель в 64-битной операционной системе должен быть 64 бит - 8 байтов.Однако, когда я использую sizeof (void *) в C ++, чтобы получить размер точки, результат равен 4.

Почему 4 ??

Ответы [ 2 ]

17 голосов
/ 27 июля 2011

Ваш исполняемый файл все еще компилируется как 32-разрядный двоичный файл.Попробуйте скомпилировать его как 64-битный проект.

Операционная система не имеет значения для внутреннего размера указателя, если процессор эмулирует программу в 32-битной среде ...

В VS2010 перейдите к диспетчеру конфигурации, введите новую запись в разделе «платформа» и выберите x64 (обычно это единственный другой вариант)

РЕДАКТИРОВАТЬ: Также,убедитесь, что вы передаете void* оператору sizeof().

4 голосов
/ 27 июля 2011

Вы компилируете в 64-битном режиме или в 32-битном режиме?В Visual Studio вам нужно выбрать тип процессора компиляции, и по умолчанию может быть 32-разрядный.

Кроме того, убедитесь, что вы делаете sizeof(void*).

...