2015-09-22 5 views
1

В Xcode 6:Xcode 7 Память Адрес

int i = 17; 
printf ("i stores its value at %p\n", &i); 

Я вижу что-то вроде этого:

i stores its value at 0xbffff738 

Но в Xcode 7, его выход формат:

i stores its value at 0x7fff5fbff7cc 

Может кто-то объясняет разницу?

ответ

0

Это связано с построенной архитектурой. Первый - это 32-разрядный адрес. Второй - это 64-разрядный адрес.

+0

int is 32bit, почему Xcode 7 помещает int в 64-разрядный адрес вместо 32-битного адреса? – CTCoder

+0

Поскольку адресация памяти основана на архитектуре системы, на которой работает ваше программное обеспечение. в 64-битной архитектуре адреса памяти всегда будут 64 бита независимо от того, что находится в этой ячейке памяти. То, что вы печатаете, является адресом этого int не самого int. Поэтому, будь то какой-либо из примитивных типов данных, таких как 'int' или' char', или объект, который может быть любого размера, его адрес будет 64 бита. Думайте о памяти как о улице, а адреса памяти - о номерах дома. Номера домов не имеют никакого отношения к числу людей, живущих там! –

+0

Получил это, спасибо за объяснение. – CTCoder