色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 堆和棧的區(qū)別

堆和棧的區(qū)別 時間:2018-08-09      來源:未知

對于編程初學者來說會接觸到一些難以理解的名稱,比如堆(heap)、棧(stack)、堆棧(stack)等。初學開發(fā)過程中往往讓人混淆不清。今天我們來談談堆和棧的具體區(qū)別,來幫助初學者理清思路。

堆和棧的區(qū)別一直都是永恒的話題,為此我也查了很多的資料,以防自己的理解錯誤,而給他人造成理解偏差。

先從簡單的一個例子引出堆和棧:

void function(){

int *p = (int *)malloc(10*sizeof(int));

}

這是C語言開發(fā)學習過程中,必不可免要學習的知識,動態(tài)分配一塊空間,空間在堆區(qū)大小是40字節(jié)(32位系統中)。而定義的指針變量p是局部變量(在棧區(qū)中 占用4字節(jié)空間),用來存放剛剛前面動態(tài)分配的空間的首地址。可以看出,在這一句代碼中同時包含了棧和堆,如圖1所示。 

圖1堆和棧

我們從以下幾個方面比較一下堆和棧:

(1)存儲內容不同

棧:在函數調用時,棧中存放的是函數中(底下是函數調用后的下一條指令)各個參數(局部變量)。

堆:一般是在堆的頭部用一個字節(jié)存放堆的大小。堆中的具體內容有程序員安排。

(2)管理方式上不同

棧:由系統自動分配空間,同時系統自動釋放空間。 例如,聲明在函數中一個局部變量 int b; 系統自動在棧中為b開辟空間,當對應的生存周期結束后棧空間自動釋放。

堆:需要程序員手動申請并且手動釋放,并指明大小,在C語言中malloc函數申請,釋放free函數,在C++中 new和delete實現。

(3)空間大小不同

棧:獲取空間較小。在Windows下,一般大小是1M或2M,當剩余棧空間不足時,分配失敗overflow。

堆:獲得空間根據系統的有效虛擬內存有關,比較靈活,比較大。

(4)能否產生碎片不同

棧:不會產生碎片,空間連續(xù)。

堆:采用的是鏈表的存儲方式,會產生碎片。

(5)生長方向不同

棧: 向低地址擴展的數據結構,是一塊連續(xù)的內存的區(qū)域。

堆: 向高地址擴展的數據結構,是不連續(xù)的內存區(qū)域。這是由于系統是用鏈表來存儲的空閑內存地址的,自然是不連續(xù)的,而鏈表的遍歷方向是由低地址向高地址。

(6)分配方式不同

棧:有2種分配方式:靜態(tài)分配和動態(tài)分配,靜態(tài)由編譯器完成,例如局部變量;動態(tài)由alloca函數實現,并且編譯器會進行釋放。

堆: 都是動態(tài)分配的,沒有靜態(tài)分配的堆。

(7)分配效率不同

棧:由系統自動分配,速度較快。但程序員是無法控制的。

堆:由new分配的內存,一般速度比較慢,而且容易產生內存碎片,不過用起來方便。

以上是棧和堆幾個方面的不同,希望通過上面的資料可以幫助初學者分清堆和棧。

上一篇:新ARM處理器架構

下一篇:分頻器設計原理淺析

熱點文章推薦
華清學員就業(yè)榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業(yè)培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 久久久久亚洲AV综合仓井空 | 内地老太婆内射内地小矮人内射 | 亚洲国产精品久久久久4婷婷 | 亚洲国产成人久久综合一区久久久国产99 | 美女内射毛片在线看 | 成年永久一区二区三区免费视频 | 感官之火在线观看 | 麻豆成人在线视频 | 亚洲国产成人精品无码区在线网站 | 日本JAPANESE熟睡人妻 | 亚洲伊人成无码综合影院 | 欧洲人与动牲交α欧美精品 | 国产浮力第一页草草影院 | 成人一区av| 99国产精品欧美久久久久的广告 | 国产亚洲一卡2卡3卡4卡老狼 | 特黄特色大片免费播放 | 涩涩欧美 | 性精品 | 亚洲国产精品一区二区九九 | 老师穿旗袍白丝让我爽翻天AV | 亚洲精品码 | 国产人妻人伦精品一区二区网站 | 日韩欧美在线视频观看 | 国产肥熟女视频一区二区三区 | 99久久久无码国产精品不卡 | 无码欧美一区二区三区 | 香蕉久久网 | 艳妇臀荡乳欲伦交换在线播放 | 国产一卡二卡三卡四卡无卡乱码视频 | 深夜视频免费在线观看 | 精品无人区卡卡卡卡卡二卡三乱码 | 日本孕妇高潮孕交视频 | 精品无人区无码乱码大片国产 | 日韩精品国产一区二区三区久久 | 极品人妻被浓精喂饱 | 伊人久久精品欧洲综合网 | 全免费又大粗又黄又爽少妇片 | 韩国三级中文字幕HD | 高h短篇辣肉各种姿势自慰h | 亚洲AV无码精品色午夜 |