(一)關于64位
只了解內存相關的知識點,64bit就是8個字節(jié),所以內存地址編號范圍用16進制表示就是0x00 00 00 00 00 00 00 00 ~ 0x FF FF FF FF FF FF FF
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 創(chuàng)建NSObject對象
NSObject *obj = [[NSObject alloc] init];
//打印
NSLog(@"%@", obj);
NSLog(@"obj指向NSObject對象的地址:%p", obj);
NSLog(@"obj變量的地址:%p", &obj);
}
return 0;
}
如上圖代碼,obj是指針,obj中值是NSObject類實例對象的地址,
因為是64位尋址空間,所以obj需要8個字節(jié)的空間.對obj使用取地址符&,得到的是obj變量的地址.
[NSObject alloc] 這句代碼就是讓系統(tǒng)分配一段NSObject類需要的內存空間,然后把這段內存空間的首地址編號返回, 后面調用init方法,
按字面理解就是初始化,依然返回的是alloc分配內存空間的首地址編號.
對象的地址,就是對象的內存空間的首地址,這是為了方便表述.如果還是認為不好理解,就回想數組的情況,數組的地址就是數組第0個元素的地址.
(二)逐步驗證,使用Xcode提供的View memory工具
1.如下圖在工程中設置斷點
2.查看log打印,得到兩個地址
3.復制obj變量的地址:0x7ffeefbff508(只復制16進制數據)
然后點擊菜單命令:Debug -> Debug Workflow -> View memory 打開新的對話界面