1. 程式人生 > >棧和堆

棧和堆

請求 一個 通過 手工 一個棧 翻譯 c語言 malloc 函數

  • 棧:存儲值類型(有時候翻譯成“堆棧”)
    • 無ARC(自動引用計數)負擔,由系統自動管理,以執行函數為單位(一個函數一個棧)
    • 空間大小編譯時決定(根據參數和局部變量可以確定)
    • 函數執行時,系統自動分配一個棧
    • 函數執行結束,系統會立即回收stack
    • 函數之間通過拷貝值傳遞
    • 具有局限性,大小有限額,超出會stack overflow(棧溢出)(一般是超大遞歸、死循環情況)

  • 堆:存儲引用類型對象
    • 分配由程序員手動請求([a alloc])(c語言裏面的malloc)
    • 釋放有兩種方式,可以手工,也可以ARC機制自動釋放
    • 函數之間通過拷貝引用(指針)傳遞
    • 具有全局性,總體大小無限制(受限於系統內存整體大小)

棧和堆