iOS知識梳理12:堆和棧

相關(guān)連接
iOS程序中的內(nèi)存分配 棧區(qū)堆區(qū)全局區(qū)

內(nèi)存分區(qū)

1.棧區(qū)(stack)

由編譯器自動分配并釋放,存放函數(shù)的參數(shù)值,局部變量等.
棧是系統(tǒng)數(shù)據(jù)結(jié)構(gòu),對應(yīng)線程或進程是唯一的.
有點是快速高效,缺點是有時限,數(shù)據(jù)不靈活.(先進后出)

2.堆區(qū)(heap)

由程序員分配和釋放,如果程序員不釋放,程序結(jié)束時,可能會由操作系統(tǒng)回收
比如在iOS中alloc都是存放在堆中.
優(yōu)點是靈活方便,數(shù)據(jù)適應(yīng)面廣,但是效率有一定降低.(順序隨意)

3.全局區(qū)(靜態(tài)區(qū))(static)

全局變量和靜態(tài)變量的存儲是放在一起的. 初始化的全局變量和靜態(tài)變量存放在一塊區(qū)域,未初始化的全局變量和靜態(tài)變量在相鄰的另一塊區(qū)域,程序結(jié)束后由系統(tǒng)釋放.
全局區(qū)又可以分為未初始化全局區(qū)(.bss)和初始化全局區(qū)(data段).

4.文字常量區(qū)

存放常量字符串,程序結(jié)束后由系統(tǒng)釋放

5.程序代碼區(qū)

存放函數(shù)的二進制代碼

堆棧申請后的系統(tǒng)響應(yīng)

1.棧

存儲每一個函數(shù)在執(zhí)行的時候都會向操作系統(tǒng)索要的資源,棧區(qū)就是函數(shù)運行時的內(nèi)存,棧區(qū)中的變量由編譯器負責分配和釋放,內(nèi)存隨著函數(shù)的運行分配,隨著函數(shù)的結(jié)束而釋放,由系統(tǒng)自動完成.

2.堆

1.首先應(yīng)該知道操作系統(tǒng)有一個記錄空閑內(nèi)存地址的鏈表.
2.當系統(tǒng)受到程序的申請時,會遍歷該鏈表,尋找第一個空間大于所有申請空間的堆結(jié)點,然后將該節(jié)點從空閑結(jié)點鏈表中刪除,并將該節(jié)點的空間分配給程序.
3.由于找到的堆節(jié)點的大小不一定正好等于申請的大小,系統(tǒng)會自動將多余的那部分重新放入空閑鏈表中.

申請大小的限制

1.棧

棧是向低地址擴展的數(shù)據(jù)結(jié)構(gòu),是一塊連續(xù)的內(nèi)存空間.棧頂?shù)牡刂泛蜅5淖畲笕萘渴窍到y(tǒng)預先規(guī)定好的,棧的大小是2M(也有的說是1M,總之是一個編譯時就確定的常數(shù)),如果申請的空間超過棧的剩余空間時,將會提示overflow,因此,能從棧獲得的空間較小.

2.堆

堆是向高地址擴展的數(shù)據(jù)結(jié)構(gòu),是不連續(xù)的內(nèi)存區(qū)域.這是由于系統(tǒng)是用鏈表來存儲的空閑內(nèi)存地址的,自然是不連續(xù)的,而鏈表的遍歷方向是由低地址向高地址.堆的大小受限于計算機系統(tǒng)中有效的虛擬內(nèi)存.由此可見,堆獲得的空間比較靈活,也比較大...

內(nèi)存分區(qū)圖
代碼塊
代碼塊在內(nèi)存中的表現(xiàn)形式
代碼塊結(jié)束后,釋放結(jié)果

由圖和可以當代碼塊運行結(jié)束后,,系統(tǒng)會自動釋放棧中的a,b和儲存Car對象地址的c....不會釋放堆中的對象....所以需要我們需要手動釋放把對象release掉....

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铝侵,一起剝皮案震驚了整個濱河市疟丙,隨后出現(xiàn)的幾起案子炊琉,更是在濱河造成了極大的恐慌团赏,老刑警劉巖可柿,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件评汰,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機寂汇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門臼膏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來检访,“玉大人卖氨,你說我怎么就攤上這事】牌罚” “怎么了氓仲?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我陕悬,道長题暖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上椭更,老公的妹妹穿的比我還像新娘舌狗。我一直安慰自己,他們只是感情好赵哲,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布吧趣。 她就那樣靜靜地躺著泛豪,像睡著了一般稠诲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诡曙,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天臀叙,我揣著相機與錄音,去河邊找鬼价卤。 笑死劝萤,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的慎璧。 我是一名探鬼主播床嫌,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼胸私!你這毒婦竟也來了厌处?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤岁疼,失蹤者是張志新(化名)和其女友劉穎阔涉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡瑰排,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年贯要,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片椭住。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡郭毕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出函荣,到底是詐尸還是另有隱情显押,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布傻挂,位于F島的核電站乘碑,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏金拒。R本人自食惡果不足惜兽肤,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绪抛。 院中可真熱鬧资铡,春花似錦、人聲如沸幢码。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽症副。三九已至店雅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間贞铣,已是汗流浹背闹啦。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辕坝,地道東北人窍奋。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像酱畅,于是被迫代替她去往敵國和親琳袄。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 2016年國慶假期終于把此書過完,整理筆記和體會于此吁峻。 關(guān)于書名 書名源于俄羅斯的演員斯坦尼斯拉夫斯基創(chuàng)作的《演員...
    李劍飛的簡書閱讀 7,245評論 2 65
  • 喜歡的話記得點贊 一滑负、內(nèi)存管理:移動設(shè)備的內(nèi)存及其有限在张,每一個APP所能占用的內(nèi)存是有限制的二、什么行為會增加AP...
    藍白七七閱讀 2,010評論 1 12
  • “text segment ”是應(yīng)用程序運行時應(yīng)用程序代碼存在的內(nèi)存段矮慕。每一個指令帮匾,每一個單個函數(shù)、過程痴鳄、方法和執(zhí)...
    紫云夕月閱讀 7,307評論 4 20
  • 一瘟斜、DAO的設(shè)計思想 1.沒有DAO的情況 當應(yīng)用中沒有DAO設(shè)計的時候,會出現(xiàn)什么問題.-->為了解決功能重復問...
    賈里閱讀 910評論 0 8
  • 近來,多了些夢痪寻,這夢倒也顯得我是一個神神叨叨的人物:有時夢見自己中槍了螺句,像電視劇里那樣交代完事情脖子一歪,任她...
    蕪鈅閱讀 352評論 1 2