數據結構中的棧和堆,計算機系統內存中的棧和堆的理解
以下理解僅是個人理解,如有不對還請大家指出。。。。
首先數據結構中的棧是一種數據結構:
例如 數據結構中的棧定義如下:
# define STTACK_INIT_SIZE 100 //棧的初始化空間大小 存放在內存中的數據區(靜態變量區)
typedef struct{ //結構體在存儲時存在文件區,當運行時則存在在棧區,注意這裏的棧不是結構體中的棧,而是計算設計內存中的棧。見下面分析
ElemType * elem;
int stacksize;
int top;
}
數據結構中的堆是樹的一種。
計算機系統內存中的棧和堆:
計算機系統在程序運行時會將程序映射到內存中,其中運行時分爲5個區:棧區、堆區、(bass區、數據區)、代碼區
棧區用於存放局部變量,臨時變量,傳遞到函數中的參數,是系統自動分配的。
堆區用於動態分批內存
這幾個區的詳細介紹見我轉載的三篇博文。相信你看後會對棧區和堆區有更深入的瞭解。
也就是說數據結構中的棧和堆反應的是你設計程序時一種數據之間的額關係的體現
而計算設計系統中內存的堆和棧是在程序運行過程中計算機用於分配資源的兩個區域。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.