堆/棧/靜態存儲區

棧:【函數調用】
函數中形參和局部變量存儲在棧上。
棧在程序中用於維護函數調用的上下文,保存了一個函數調用所需要維護的信息。
函數調用棧上的數據,當函數調用時,對應的棧空間在函數返回前是專用的(即此時不能被其餘函數訪問),在函數調用結束之後,棧空間將被釋放,數據不再有效。
注意:函數調用結束之後,棧空間釋放。故局部變量中的指針和地址是禁止作爲返回值的。(指針和地址通過變異之後,一般都關聯了一個特定的內存,當函數調用結束之後,這段內存也會消失,接受了局部變量中的指針和地址的變量也就無法再找到這段內存)。

堆:【內存動態申請和歸還】
堆是程序中一塊預留的內存空間,給程序員自由支配。
堆中被程序申請使用的內存在主動釋放前都是一直有效的
獲取堆:malloc,釋放堆free。

靜態存儲區:【全局變量和靜態變量】
主要保存全局變量和靜態局部變量,其生命週期直到程序運行結束。
其大小在編譯期間就確定,且隨着程序的運行而分配空間信息最終會保存到可執行程序中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章