国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 數(shù)據(jù)結構、操作系統(tǒng)、匯編語言、還有C語言本身的堆棧有什么不同?

數(shù)據(jù)結構、操作系統(tǒng)、匯編語言、還有C語言本身的堆棧有什么不同?

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-10-11 04:26:46 1696969606

一、數(shù)據(jù)結構上的堆棧、操作系統(tǒng)上的堆棧,匯編語言的堆棧、還有C語言本身的堆棧的區(qū)別

數(shù)據(jù)結構中棧,先進后出的一種結構,而堆指的是優(yōu)先隊列,帶優(yōu)先級的隊列。

c語言的堆棧,是指一個程序運行起來系統(tǒng)給分配的區(qū)域,總共5個,堆棧區(qū),簡稱棧區(qū),系統(tǒng)自動釋放的區(qū)域。堆區(qū),需要程序員自己手動開辟和釋放(malloc,free)的區(qū)域、靜態(tài)區(qū)(全局區(qū))static、常量區(qū)(字符串常量等)、代碼區(qū)。(這里指的是用戶棧了)

匯編語言中堆棧的作用當出現(xiàn)參數(shù)太多,寄存器不夠用時,暫時存儲到的地方。

操作系統(tǒng)堆棧(系統(tǒng)棧)的作用主要是調用子程序時暫存斷點地址和保護(恢復)現(xiàn)場數(shù)據(jù)。

這幾個堆棧說通俗作用基本上暫時存放數(shù)據(jù)和地址,保護現(xiàn)場和斷點么,名字一樣不是沒原因的。

c程序最終還不是要轉化為匯編來執(zhí)行。

特別的,數(shù)據(jù)結構中的堆:

堆實際上指的就是(滿足堆性質的)優(yōu)先隊列的一種數(shù)據(jù)結構,第1個元素有較高的優(yōu)先權。

堆性質:葉子節(jié)點小于(或大于)父親節(jié)點,則為小(大)頂堆。

數(shù)據(jù)結構中的堆可以用一個數(shù)組來存儲(完全二叉樹結構。)棧實際上就是滿足先進后出的性質的數(shù)學或數(shù)據(jù)結構。

操作系統(tǒng)中的堆:

這里的堆是屬于內存分配方式的一種:動態(tài)分配內存。

實現(xiàn)的方式更接近于鏈表。堆內存中有很多塊內存,可能不是連續(xù)的。所有需要用鏈表來組織在分配的時候,有多種策略。首先查找是否有空閑的并且滿足大小的堆內存,然后把最大的那塊給需求者。這里有點像數(shù)據(jù)結構中堆的優(yōu)先權。

操作系統(tǒng)中堆和棧的區(qū)別:

1、棧區(qū)(stack)— 由編譯器自動分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結構中的棧。

2、堆區(qū)(heap)— 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。注意它與數(shù)據(jù)結構中的堆是兩回事,分配方式倒是類似于鏈表。

延伸閱讀:

二、堆棧的基本概念

堆棧是一種特殊的線性表,堆棧的數(shù)據(jù)元素以及數(shù)據(jù)元素間的邏輯關系和線性表完全相同,其差別是:線性表允許在任意位置插入和刪除數(shù)據(jù)元素操作,而堆棧只允許在固定一端進行插入和刪除數(shù)據(jù)元素操作

根據(jù)堆棧的定義,每次進棧的數(shù)據(jù)元素都放在原當前棧頂元素之前而成為新的棧頂元素,每次退棧的數(shù)據(jù)元素都是原當前棧頂元素,這樣,最后進入堆棧的數(shù)據(jù)元素總是最先退出堆棧,因此,堆棧也稱作后進先出的線性表,或簡稱后進先出表。

聲明:本站稿件版權均屬千鋒教育所有,未經(jīng)許可不得擅自轉載。
10年以上業(yè)內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT