主動已經(jīng)是我對熱愛東西表達的極限了
- 分析
alloc
的源碼镰禾,看看alloc
都干些了什么?
在分析之前鹿响,先看看對象他們之間的區(qū)別都有哪些羡微?定義對象如下:
LGPerson *p1 = [LGPerson alloc];
LGPerson *p2 = [p1 init];
LGPerson *p3 = [p1 init];
LGNSLog(@"%@ - %p - %p",p1,p1,&p1);
LGNSLog(@"%@ - %p - %p",p2,p2,&p2);
LGNSLog(@"%@ - %p - %p",p3,p3,&p3);
并打印出結(jié)果對其進行分析
結(jié)果:
p1
,p2
,p3
一級指針直接訪問內(nèi)容是相同的
p1
,p2
,p3
對象指針指向的的內(nèi)存地址相同(內(nèi)存地址相同)
p1
,p2
,p3
對象的指針地址不同(指針地址不同)
說明:
%p -> p1
表示對象指針指向的的內(nèi)存地址
%p -> &p1
表示對象的指針地址
- 總結(jié) :
TTperson
向系統(tǒng)內(nèi)存申請空間,申請的內(nèi)存空間為p1
,init
沒有對原來的內(nèi)存空間做任何處理惶我,內(nèi)存的申請來自于alloc
,TTPerson
開辟內(nèi)存空間博投,p1
,p2
,p3
對象的指針地址不同绸贡,但他們指向的內(nèi)存空間是一致的
那么問題來了,alloc
又是如何開辟內(nèi)存空間的?
棧內(nèi)存是連續(xù)的听怕,指針8字節(jié)