堆和棧的存儲
A. 在java編寫的程序中,棧內存跟堆內存分別存儲的是什麼呢
你只需要知道兩點
一
堆中存放具體數據
棧中存放你所命名的變數名字
二
既然叫匿名函數
自然沒有名字
所以這就是在堆里有具體數據
而棧中沒有名字指向這個數據的意思
B. 堆,棧和存儲的區別
http://ke..com/view/93201.htm#1
純搬網路。
棧(操作系統):由編譯器自動分配釋放 ,存放函數的參數值,局部變數的值等。其操作方式類似於數據結構中的棧
棧使用的是一級緩存, 他們通常都是被調用時處於存儲空間中,調用完畢立即釋放
堆(操作系統): 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收,分配方式倒是類似於鏈表。
堆則是存放在二級緩存中,生命周期由虛擬機的垃圾回收演算法來決定(並不是一旦成為孤兒對象就能被回收)。所以調用這些對象的速度要相對來得低一些
堆(數據結構):堆可以被看成是一棵樹,如:堆排序
棧(數據結構):一種後進先出的的數據結構
C. 堆(heap)和棧(Stack)的區別是什麼為什麼平時都把堆棧放在一起講
將堆跟棧放在一起將是因為兩者都是存儲數據的方式。區別如下:
一、主體不同
1、堆:是計算機科學中一類特殊的數據結構的統稱。堆通常是一個可以被看做一棵完全二叉樹的數組對象。
2、棧:又名堆棧,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。
二、特點不同
1、堆:堆中某個節點的值總是不大於或不小於其父節點的值;堆總是一棵完全二叉樹。
2、棧:是一種只能在一端進行插入和刪除操作的特殊線性表。它按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後的數據在棧頂。
三、作用不同
1、堆:堆是非線性數據結構,相當於一維數組,有兩個直接後繼。
2、棧:可以用來在函數調用的時候存儲斷點,做遞歸時要用到棧。
D. C語言里,哪些變數是存放在堆里,哪些是存放在棧里
放在堆里的數據是管理員自己開辟空間和釋放空間,如,new 和malloc。
而放在棧里的數據時計算機自動分配內存和釋放的,如變數。