程序開發(fā)的四個步驟 什么是棧存儲區(qū)?
什么是棧存儲區(qū)?在C內(nèi)存中分為四個區(qū)域,分別是堆、棧、靜態(tài)存儲區(qū)和常量存儲區(qū)1。堆棧是編譯器在需要時分配的變量的存儲區(qū)域,在不需要時自動清除。其中的變量通常是局部變量、函數(shù)參數(shù)等。堆,也稱為空閑存儲區(qū)
什么是棧存儲區(qū)?
在C內(nèi)存中分為四個區(qū)域,分別是堆、棧、靜態(tài)存儲區(qū)和常量存儲區(qū)
1。堆棧是編譯器在需要時分配的變量的存儲區(qū)域,在不需要時自動清除。其中的變量通常是局部變量、函數(shù)參數(shù)等。堆,也稱為空閑存儲區(qū),是在程序執(zhí)行期間動態(tài)分配的,如果程序員不釋放新的,那么操作系統(tǒng)會在程序結(jié)束后自動回收它。如果堆對象被分配了,但是忘記釋放,如果對象被釋放了,但是相應(yīng)的指針沒有設(shè)置為null,那么內(nèi)存就會泄漏,指針是“懸掛指針”
3。靜態(tài)存儲區(qū)。所有靜態(tài)對象和全局對象都分配在靜態(tài)存儲區(qū)域中。
4。固定存儲區(qū)域。這是一個特殊的儲藏區(qū)。它們存儲的是常量,不能修改
](當(dāng)然,您可以通過不正確的方法修復(fù)堆棧:每當(dāng)啟動一個新線程時,Java虛擬機(jī)都會為它分配一個Java堆棧。JVM將只在Java堆棧上執(zhí)行兩個操作:堆棧按下或以堆棧幀為單位退出堆棧。每個線程都包含一個堆棧區(qū)域,其中只存儲基本數(shù)據(jù)類型的對象和自定義對象(而不是對象)的引用,對象存儲在堆棧區(qū)域中。
2. 堆:存儲所有對象,每個對象都包含相應(yīng)的類信息——類的目的是獲取操作指令。JVM中的所有線程只共享一個堆。堆不存儲基本類型和對象引用,只存儲對象本身。