日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
各個(gè)C++內(nèi)存區(qū)域功能對(duì)比

C++作為一款C語(yǔ)言的升級(jí)版本,具有非常強(qiáng)大的功能。它不但能夠支持各種程序設(shè)計(jì)風(fēng)格,而且還具有C語(yǔ)言的所有功能。我們?cè)谶@里為大家介紹的是其中一個(gè)比較重要的內(nèi)容,C++內(nèi)存區(qū)域的基本介紹。#t#

創(chuàng)新互聯(lián)是專業(yè)的息烽網(wǎng)站建設(shè)公司,息烽接單;提供網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行息烽網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

C++內(nèi)存區(qū)域分為5個(gè)區(qū)域。分別是堆,棧,自由存儲(chǔ)區(qū),全局/靜態(tài)存儲(chǔ)區(qū)和常量存儲(chǔ)區(qū)。

棧:由編譯器在需要的時(shí)候分配,在不需要的時(shí)候自動(dòng)清除的變量存儲(chǔ)區(qū)。里面通常是局部變量,函數(shù)參數(shù)等。

堆:由new分配的內(nèi)存塊,他們的釋放編譯器不去管,由我們的應(yīng)用程序去控制,一般一個(gè)new對(duì)應(yīng)一個(gè)delete。如果程序員沒(méi)有釋放掉,那么在程序結(jié)束后,操作系統(tǒng)會(huì)自動(dòng)回收。

自由存儲(chǔ)區(qū):由malloc等分配的內(nèi)存塊,和堆十分相似,不過(guò)它使用free來(lái)結(jié)束自己的生命。

全局/靜態(tài)存儲(chǔ)區(qū):全局變量和靜態(tài)變量被分配到同一塊內(nèi)存中,在以前的c語(yǔ)言中。全局變量又分為初始化的和未初始化的,在c++里面沒(méi)有這個(gè)區(qū)分了,他們共同占用同一塊內(nèi)存。

常量存儲(chǔ)區(qū):這是一塊比較特殊的存儲(chǔ)區(qū),里面存放的是常量,不允許修改。

C++內(nèi)存區(qū)域中堆和棧的區(qū)別:

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

空間大小不同:一般來(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。

能否產(chǎn)生碎片:對(duì)于堆來(lái)講,頻繁的new/delete勢(shì)必會(huì)造成內(nèi)存空間的不連續(xù),從而造成大量的碎片,使程序效率降低。對(duì)于棧來(lái)講,則不會(huì)存在這個(gè)問(wèn)題。

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

分配方式不同:堆都是動(dòng)態(tài)分配的;棧有靜態(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ì)棧提供支持:分配專門的寄存器存放棧的地址,壓棧出棧都有專門的指令執(zhí)行,這就決定了棧的效率比較高。堆則是c/c++庫(kù)函數(shù)提供的,機(jī)制很復(fù)雜。庫(kù)函數(shù)會(huì)按照一定的算法進(jìn)行分配。顯然,堆的效率比棧要低得多。

以上就是對(duì)C++內(nèi)存區(qū)域的基本介紹。


新聞名稱:各個(gè)C++內(nèi)存區(qū)域功能對(duì)比
分享鏈接:http://www.dlmjj.cn/article/dpgpsoi.html