日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

什么是堆栈?

發(fā)布時(shí)間:2025/3/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 什么是堆栈? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? ? 堆棧(heap?and stack)的概念在計(jì)算機(jī)領(lǐng)域中不容忽視。雖然堆棧常被連著念,堆與棧是兩個(gè)相對的概念:堆指先進(jìn)先出(first in first out),棧指先進(jìn)后出(first in last out)。

?????? 很顯然,堆與棧映射了人類社會(huì)的許多現(xiàn)象。比如超市的食品柜臺(tái)和路邊飲料販賣機(jī)的存取順序,為了防止過期,總是將新進(jìn)貨放在最里面,外側(cè)的食物被顧客不斷拿取:這就是堆。再想象一個(gè)小朋友用來存放糖果的長長的抽屜,無論拿糖還是放糖都習(xí)慣在抽屜的最外側(cè)操作,久之,里面的糖果就過期了:這是棧。顯然“堆”在人類社會(huì)中更“合理”些。

?????? 如此看來,數(shù)據(jù)棧只能在一端(稱為棧頂(top))對數(shù)據(jù)項(xiàng)進(jìn)行插入和刪除,而數(shù)據(jù)堆可以從兩端同時(shí)操作。因此棧的特性是嚴(yán)格,有序,規(guī)范。相反,堆就是自由,靈活,隨意的。但是堆與棧的共通之處在于,數(shù)據(jù)的讀寫不根據(jù)內(nèi)存地址,而是根據(jù)寫入的順序決定讀出的順序。所以,這種獨(dú)特的緩存機(jī)制雖要求每個(gè)數(shù)據(jù)單元的大小等價(jià),卻提供了高速讀寫數(shù)據(jù)的能力。

??????1.計(jì)算機(jī)/網(wǎng)絡(luò)設(shè)備中的緩存堆。所謂緩存可以視作臨時(shí)存儲(chǔ)的一個(gè)緩沖區(qū)(cache),交換機(jī)和路由器都自帶這種緩存區(qū),當(dāng)網(wǎng)線帶寬的吞吐量超過cpu的計(jì)算速度時(shí),溢出的數(shù)據(jù)就會(huì)被安置在緩存里,以“堆積”的形式“排隊(duì)”等候被處理。它的靈活之處在于,緩存容量大小可以調(diào)整,既可以手動(dòng)靜態(tài)指定也可以程序動(dòng)態(tài)分配。它的高效在于比普通內(nèi)存的速度快許多。

??????2.高級程序語言。一個(gè)由C/C++編譯的程序占用的內(nèi)存分為以下幾個(gè)部分:棧區(qū),堆區(qū),靜態(tài)區(qū),常量區(qū),程序代碼區(qū)。當(dāng)C語言函數(shù)被調(diào)用時(shí),堆棧區(qū)會(huì)由編譯器或程序員分配釋放,用來存
放函數(shù)的參數(shù)名,局部變量等。在java中,棧與堆都是被用來在RAM中存放數(shù)據(jù)的地方,與C++不同,Java自動(dòng)管理?xiàng):投?#xff0c;程序員不能直接地設(shè)置棧或堆。
??????3.MPLS(多協(xié)議標(biāo)簽交換)中的標(biāo)簽棧。在mpls vpn中,棧底標(biāo)簽和棧頂標(biāo)簽由不同協(xié)議分配分發(fā),被用來準(zhǔn)確地鎖定兩端的BGP路由器以及中間的標(biāo)簽交換路徑。BGP分配的棧底標(biāo)簽最終由對端的BGP彈出,ldp分配的棧頂標(biāo)簽則是“后進(jìn)先出”的標(biāo)簽,就像C語言中if語句與else語句之間的等價(jià)對應(yīng)匹配的規(guī)則一樣。

?

轉(zhuǎn)載于:https://www.cnblogs.com/jinhengyu/p/7517191.html

總結(jié)

以上是生活随笔為你收集整理的什么是堆栈?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。