青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

aurain
技術(shù)文摘
posts - 137,  comments - 268,  trackbacks - 0

聯(lián)系:都是用來(lái)處理變量的內(nèi)存分配的。

區(qū)別:主要的區(qū)別由以下幾點(diǎn):

    1、管理方式不同;

    2、空間大小不同;

    3、能否產(chǎn)生碎片不同;

    4、生長(zhǎng)方向不同;

    5、分配方式不同;

    6、分配效率不同;

    管理方式:對(duì)于棧來(lái)講,是由編譯器自動(dòng)管理,無(wú)需我們手工控制;對(duì)于堆來(lái)說(shuō),釋放工作由程序員控制,容易產(chǎn)生memory leak。

    空間大小:一般來(lái)講在32位系統(tǒng)下,堆內(nèi)存可以達(dá)到4G的空間,從這個(gè)角度來(lái)看堆內(nèi)存幾乎是沒(méi)有什么限制的。但是對(duì)于棧來(lái)講,一般都是有一定的空間大小的,例如,在VC6下面,默認(rèn)的棧空間大小是1M(好像是,記不清楚了)。當(dāng)然,我們可以修改:   

    打開(kāi)工程,依次操作菜單如下:Project->Setting->Link,在Category 中選中Output,然后在Reserve中設(shè)定堆棧的最大值和commit。

注意:reserve最小值為4Byte;commit是保留在虛擬內(nèi)存的頁(yè)文件里面,它設(shè)置的較大會(huì)使棧開(kāi)辟較大的值,可能增加內(nèi)存的開(kāi)銷和啟動(dòng)時(shí)間。

    碎片問(wèn)題:對(duì)于堆來(lái)講,頻繁的new/delete勢(shì)必會(huì)造成內(nèi)存空間的不連續(xù),從而造成大量的碎片,使程序效率降低。對(duì)于棧來(lái)講,則不會(huì)存在這個(gè)問(wèn)題,因?yàn)闂J窍冗M(jìn)后出的隊(duì)列,他們是如此的一一對(duì)應(yīng),以至于永遠(yuǎn)都不可能有一個(gè)內(nèi)存塊從棧中間彈出,在他彈出之前,在他上面的后進(jìn)的棧內(nèi)容已經(jīng)被彈出,詳細(xì)的可以參考數(shù)據(jù)結(jié)構(gòu),這里我們就不再一一討論了。

    生長(zhǎng)方向:對(duì)于堆來(lái)講,生長(zhǎng)方向是向上的,也就是向著內(nèi)存地址增加的方向;對(duì)于棧來(lái)講,它的生長(zhǎng)方向是向下的,是向著內(nèi)存地址減小的方向增長(zhǎng)。

    分配方式:堆都是動(dòng)態(tài)分配的,沒(méi)有靜態(tài)分配的堆。棧有2種分配方式:靜態(tài)分配和動(dòng)態(tài)分配。靜態(tài)分配是編譯器完成的,比如局部變量的分配。動(dòng)態(tài)分配由alloca函數(shù)進(jìn)行分配,但是棧的動(dòng)態(tài)分配和堆是不同的,他的動(dòng)態(tài)分配是由編譯器進(jìn)行釋放,無(wú)需我們手工實(shí)現(xiàn)。

    分配效率:棧是機(jī)器系統(tǒng)提供的數(shù)據(jù)結(jié)構(gòu),計(jì)算機(jī)會(huì)在底層對(duì)棧提供支持:分配專門(mén)的寄存器存放棧的地址,壓棧出棧都有專門(mén)的指令執(zhí)行,這就決定了棧的效率比較高。堆則是C/C++函數(shù)庫(kù)提供的,它的機(jī)制是很復(fù)雜的,例如為了分配一塊內(nèi)存,庫(kù)函數(shù)會(huì)按照一定的算法(具體的算法可以參考數(shù)據(jù)結(jié)構(gòu)/操作系統(tǒng))在堆內(nèi)存中搜索可用的足夠大小的空間,如果沒(méi)有足夠大小的空間(可能是由于內(nèi)存碎片太多),就有可能調(diào)用系統(tǒng)功能去增加程序數(shù)據(jù)段的內(nèi)存空間,這樣就有機(jī)會(huì)分到足夠大小的內(nèi)存,然后進(jìn)行返回。顯然,堆的效率比棧要低得多。

    從這里我們可以看到,堆和棧相比,由于大量new/delete的使用,容易造成大量的內(nèi)存碎片;由于沒(méi)有專門(mén)的系統(tǒng)支持,效率很低;由于可能引發(fā)用戶態(tài)和核心態(tài)的切換,內(nèi)存的申請(qǐng),代價(jià)變得更加昂貴。所以棧在程序中是應(yīng)用最廣泛的,就算是函數(shù)的調(diào)用也利用棧去完成,函數(shù)調(diào)用過(guò)程中的參數(shù),返回地址,EBP和局部變量都采用棧的方式存放。所以,我們推薦大家盡量用棧,而不是用堆。

    雖然棧有如此眾多的好處,但是由于和堆相比不是那么靈活,有時(shí)候分配大量的內(nèi)存空間,還是用堆好一些。

    無(wú)論是堆還是棧,都要防止越界現(xiàn)象的發(fā)生(除非你是故意使其越界),因?yàn)樵浇绲慕Y(jié)果要么是程序崩潰,要么是摧毀程序的堆、棧結(jié)構(gòu),產(chǎn)生以想不到的結(jié)果,就算是在你的程序運(yùn)行過(guò)程中,沒(méi)有發(fā)生上面的問(wèn)題,你還是要小心,說(shuō)不定什么時(shí)候就崩掉,那時(shí)候debug可是相當(dāng)困難:)
     對(duì)了,還有一件事,如果有人把堆棧合起來(lái)說(shuō),那它的意思是棧,可不是堆,呵呵,清楚了

posted on 2008-02-22 18:04 閱讀(769) 評(píng)論(0)  編輯 收藏 引用 所屬分類: c/c++基礎(chǔ)知識(shí)

<2014年7月>
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

常用鏈接

留言簿(17)

隨筆分類(138)

隨筆檔案(137)

網(wǎng)絡(luò)開(kāi)發(fā)

最新隨筆

搜索

  •  

積分與排名

  • 積分 - 501929
  • 排名 - 37

最新隨筆

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲摸下面视频| 欧美国产亚洲视频| 亚洲毛片在线免费观看| 翔田千里一区二区| 国产一区99| 老司机精品福利视频| 欧美国产日产韩国视频| 这里只有精品视频| 伊人久久大香线蕉av超碰演员| 欧美成人亚洲成人| 午夜精品久久久久久久99樱桃| 欧美激情一区二区久久久| 欧美亚洲免费电影| 亚洲视频福利| 亚洲国产精品电影在线观看| 国产精品毛片| 欧美日韩在线高清| 欧美14一18处毛片| 久久视频国产精品免费视频在线| 欧美色图五月天| 日韩视频一区| 欧美一级淫片aaaaaaa视频| 亚洲第一精品影视| 国产女人精品视频| 欧美另类一区二区三区| 久久成人18免费观看| 欧美成黄导航| 久久精品视频在线观看| 亚洲欧美日本精品| 一本色道久久88亚洲综合88| 一区视频在线播放| 狠狠色狠狠色综合日日小说| 国产精品成人免费| 欧美在线观看视频一区二区| 日韩视频在线观看国产| 欧美成人一区二区| 久久综合色播五月| 久久久蜜桃一区二区人| 亚洲欧美另类在线| 午夜欧美精品久久久久久久| 国内精品久久久久久久影视麻豆| 欧美午夜视频在线| 欧美色区777第一页| 欧美日韩在线一区二区| 欧美丝袜一区二区三区| 国产精品成人在线| 国产乱码精品一区二区三区不卡| 国产精品欧美一区二区三区奶水| 欧美日韩综合一区| 国产精品久久久久一区二区三区 | 亚洲激情亚洲| 在线精品国产欧美| 一区视频在线播放| 亚洲黄色性网站| 中日韩男男gay无套| 午夜精品国产更新| 国内精品一区二区三区| 国产一区二区精品在线观看| 欧美高潮视频| 欧美日韩国产精品一区| 在线视频免费在线观看一区二区| 99在线热播精品免费| 亚洲一区二区三区免费视频| 久久久噜噜噜久噜久久| 欧美区在线观看| 国产精品资源| 亚洲精选成人| 亚洲免费中文字幕| 美女脱光内衣内裤视频久久影院 | 国产精品国产三级欧美二区| 欧美精品色综合| 欧美视频网站| 国产午夜精品美女视频明星a级| 国产在线一区二区三区四区| 在线播放国产一区中文字幕剧情欧美| 亚洲国产黄色| 欧美一级在线视频| 欧美国产三级| 欧美在线www| 国产精品久久久一本精品| 在线观看视频一区| 亚洲男人的天堂在线aⅴ视频| 欧美1区3d| 亚洲网在线观看| 蜜臀va亚洲va欧美va天堂| 国产精品自在在线| 亚洲视频一区二区在线观看 | 精品96久久久久久中文字幕无| 亚洲精品一区二区三区福利| 性欧美1819sex性高清| 欧美一二三区精品| 牛牛国产精品| 午夜精品999| 欧美日韩在线一区二区三区| 亚洲人成在线影院| 亚洲国产乱码最新视频| 亚洲国产一区二区精品专区| 日韩一级片网址| 欧美一区二区三区视频免费| 亚洲精品久久久久久久久久久久| 欧美va亚洲va国产综合| 亚洲欧美日韩天堂| 欧美精品性视频| 亚洲福利精品| 久热国产精品| 久久久亚洲人| 亚洲第一精品久久忘忧草社区| 欧美在线免费一级片| 夜夜嗨av一区二区三区中文字幕| 欧美 日韩 国产精品免费观看| 国产亚洲观看| 另类综合日韩欧美亚洲| 久久福利精品| 韩日午夜在线资源一区二区| 久久综合五月天婷婷伊人| 欧美亚洲在线视频| 红桃视频欧美| 欧美韩日精品| 老司机精品导航| 亚洲盗摄视频| 欧美性猛片xxxx免费看久爱| 久久本道综合色狠狠五月| 国产精品久久99| 99re66热这里只有精品4| 欧美成人亚洲| 宅男噜噜噜66一区二区66| 性欧美xxxx大乳国产app| 欧美日韩一区二区精品| 国内自拍一区| aa国产精品| 噜噜噜噜噜久久久久久91| 日韩视频精品在线| 欧美日韩爆操| 亚洲日本成人女熟在线观看| 亚洲少妇自拍| 夜夜夜久久久| 欧美成人午夜| 国产一区二区三区av电影| 99精品国产在热久久下载| 蜜臀91精品一区二区三区| 亚洲午夜国产成人av电影男同| 欧美色中文字幕| 欧美一区二区三区另类| 欧美大片专区| 亚洲特色特黄| 欧美www视频在线观看| 怡红院av一区二区三区| 日韩视频在线一区二区三区| 久久久久久色| 亚洲国产高潮在线观看| 9色国产精品| 黄色亚洲网站| 中文国产亚洲喷潮| 欧美国产一区二区| 日韩亚洲欧美成人一区| 亚洲一区在线观看视频 | 午夜精品福利在线观看| 亚洲综合电影| 亚洲激情午夜| 欧美在线视频二区| 亚洲蜜桃精久久久久久久| 欧美自拍偷拍午夜视频| 日韩一二在线观看| 久久精品1区| 一本久道久久综合中文字幕 | av成人免费| 国语自产在线不卡| 欧美在线日韩在线| 欧美日韩福利在线观看| 欧美成人免费小视频| 国产日韩精品在线观看| 亚洲欧洲一级| 在线免费观看视频一区| 亚洲一区久久| 一本色道久久综合狠狠躁篇的优点| 亚洲一区二区三区免费在线观看 | 亚洲人体影院| 亚洲精华国产欧美| 久久激情中文| 久久www成人_看片免费不卡| 亚洲一区二区三区四区中文| 国产欧美精品在线| 欧美在线首页| 性18欧美另类| 亚洲精品裸体| 欧美日韩国产色站一区二区三区| 亚洲欧美在线播放| 狼人天天伊人久久| 伊人久久噜噜噜躁狠狠躁| 欧美a级在线| 在线中文字幕一区| 亚洲高清资源综合久久精品| 一本色道久久加勒比精品| 久久精品欧洲| 亚洲一二三区视频在线观看| 久久久天天操| 香蕉av777xxx色综合一区| 影音先锋在线一区| 国产精品第2页| 久久精品国产一区二区三|