怎樣理解作業系統中「棧」的概念

2022-05-18 12:56:24 字數 1081 閱讀 4622

1樓:

1. 因為方便,畢竟在棧中弄一塊資料只要給esp加點數字就行了,區域性變數不值錢。堆就麻煩多了。

2. 對。這是資料棧的一個內建實現。但是你對區域性變數的理解有誤區,

區域性變數訪問靠的是ebp暫存器,如果你反彙編就會看到進入一個函式首先會:

push ebp // 儲存ebp

mov ebp,esp // 將ebp用來指向函式棧區開頭

sub esp,xxh // 初始化區域性變數

函式棧區是我自己的叫法,不過要記得若是棧訪問超出了這個區域那程式肯定錯了。

然後訪問a和b用的是[ebp-n]比如,[ebp-4]可能就指向你的a。

明白了吧,esp和ebp都是暫存器,esp是32位棧暫存器,會跟著push和pop操作變化值,也就是通常的資料棧實現中的那個頂部指標。ebp是基址暫存器,常年打醬油所以經常被這麼用。

上面那傢伙是怎麼混到15級的 =.=

2樓:匿名使用者

1、這沒有為什麼,c語言它就規定區域性動態變數用完就銷燬,所以在系統中專門劃一塊區域放這類變數。

2、這個棧不需要後進先出,它只滿足「棧」的「只能在一端(稱為棧頂(top))對資料項進行插入和刪除」這個性質,你可以在不把其他元素出棧的前提下就直接訪問棧底元素。

c語言棧是什麼,棧在哪,需要定義嗎?

3樓:我要鬥爭到死

棧是一種資料結構,後進先出,即最後進入棧的資料最先彈出。

c語言中沒有棧這種資料型別,需要自己程式設計構建。

4樓:匿名使用者

「棧」是一種後進先出(lifo,或叫先進後出filo)的資料結構。這是資料結構的範疇。

您所說的棧,是由作業系統負責管理的一段棧空間,在遞迴、子程式呼叫等處應用廣泛。這是作業系統的範疇。

——並不是在c語言範疇討論的概念。

5樓:匿名使用者

推薦你看下軟體技術基礎比較基礎的東西 其實就是一個資料結構

6樓:匿名使用者

你知道什麼是資料結構嗎?d,r,p

手機作業系統和電腦作業系統的區別

都是bai作業系統 區別就在硬體不一樣du。zhi 手機,電腦 效能要求不 dao一樣。版1.手機硬體條件不如權電腦,資源比較緊張。2.手機一般不會關機,而電腦經常重啟。3.手機一般要求比較省電,所以也要求作業系統的效能。等等等等 windows mobile作業系統由於脫胎於pc機的windows...

電腦的作業系統問題,電腦的作業系統的問題

問題一 店主給你安裝的win7肯定是盜版,不需鑑定,一套正版系統多少錢啊 店家會給你裝正版?問題二 如果想把win7恢復成win8,可以嗎?你的既然是正版win8 那麼一定是品牌機了,所以如果店家沒有給你整個重新分割槽格式化的話 可以通過系統恢復來恢復到原先的系統,也可以通過電腦自帶的系統恢復光碟來...

簡述網路作業系統的功能,網路作業系統的主要功能是什麼

網路作業系統藉由網路達到互相傳遞資料與各種訊息,分為伺服器 server 及客戶端 client 伺服器的主要功能是管理伺服器和網路上的各種資源和網路裝置的共用,加以統合並控管流量,避免有癱瘓的可能性。而客戶端就是有著能接收伺服器所傳遞的資料來運用的功能,好讓客戶端可以清楚的搜尋所需的資源。擴充套件...