最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

c語(yǔ)言變長(zhǎng)數(shù)組和動(dòng)態(tài)數(shù)組有什么區(qū)別,能否完全取代?

c語(yǔ)言變長(zhǎng)數(shù)組和動(dòng)態(tài)數(shù)組有什么區(qū)別,能否完全取代?

查看完整描述

4 回答

?
android也瘋狂

TA貢獻(xiàn)10條經(jīng)驗(yàn) 獲得超7個(gè)贊

To sum up,新式的"變長(zhǎng)數(shù)組",相對(duì)于malloc所分配出的"動(dòng)態(tài)數(shù)組",它不能解決一些問(wèn)題,包括但不限于:

1. 爆棧。malloc分配是在堆區(qū),堆區(qū)向來(lái)慷慨大方能給多少給多少,可是"變長(zhǎng)數(shù)組"仍然是在棧上分配的,開(kāi)大了還是會(huì)爆棧。

2. 雖說(shuō)"變長(zhǎng)數(shù)組"可以運(yùn)行期指定大小,但是大小一旦指定就不可變。你還是沒(méi)辦法用它實(shí)現(xiàn)vector(或者類(lèi)似的結(jié)構(gòu))。

3. 自己管內(nèi)存。因?yàn)?變長(zhǎng)數(shù)組"仍然是棧上分配的,棧下生,棧下死。

如果反過(guò)來(lái)的話(huà),"動(dòng)態(tài)數(shù)組"只能一定程度上代替"變長(zhǎng)數(shù)組"。

原因之一是另一位答主提到過(guò)的,某些情況下根本就沒(méi)有"堆",也沒(méi)有動(dòng)態(tài)內(nèi)存分配。
另一方面堆分配比較耗時(shí),頻繁申請(qǐng)釋放還可能會(huì)產(chǎn)生內(nèi)存碎片。

查看完整回答
2 反對(duì) 回復(fù) 2018-02-11
?
慕UI4062818

TA貢獻(xiàn)1條經(jīng)驗(yàn) 獲得超1個(gè)贊

VLA的目的就是數(shù)組的長(zhǎng)度是由一個(gè)變量指定的,而非常數(shù)。而動(dòng)態(tài)數(shù)組,則是數(shù)組長(zhǎng)度可以隨需求變化(擴(kuò)充)。

VLA目前在MSVC/GCC上的實(shí)現(xiàn)全部都是利用到了alloca() ,在棧上動(dòng)態(tài)申請(qǐng)一塊內(nèi)存(移動(dòng)棧指針),當(dāng)函數(shù)返回時(shí),棧指針回歸外一層函數(shù)時(shí)的狀態(tài),因而alloca() 分配的內(nèi)存得以釋放。

實(shí)際工程中不推薦使用VLA。原因如下:

若數(shù)組長(zhǎng)度很大,有造成爆棧的危險(xiǎn)。OS給進(jìn)程的棧的大小是有限的。

使用alloca()后會(huì)造成部分與棧操作有關(guān)的編譯器優(yōu)化失效。

因此,若數(shù)組長(zhǎng)度有可能很大,請(qǐng)直接在堆上分配避免爆棧。

若數(shù)組長(zhǎng)度有個(gè)確定的上限值,可直接用那個(gè)上限值來(lái)申請(qǐng)??臻g

查看完整回答
1 反對(duì) 回復(fù) 2018-02-11
?
所謂伊人_在水一方

TA貢獻(xiàn)12條經(jīng)驗(yàn) 獲得超8個(gè)贊

變長(zhǎng)數(shù)組一般是在棧上分配,動(dòng)態(tài)數(shù)組一般是在堆上分配。

變長(zhǎng)數(shù)組在函數(shù)返回之后聲明周期就結(jié)束了,而動(dòng)態(tài)數(shù)組需要手動(dòng)free掉。

變長(zhǎng)數(shù)組使用多了容易棧溢出,而且它在c11里只是可選特性,和標(biāo)準(zhǔn) C++ 也不兼容,所以不建議過(guò)多使用。

查看完整回答
反對(duì) 回復(fù) 2018-02-11
?
喵喵一只汪

TA貢獻(xiàn)7條經(jīng)驗(yàn) 獲得超1個(gè)贊

http://img1.sycdn.imooc.com//5a7f99fa0001e3f006550103.jpg

使用 malloc( ) 等函數(shù)分配而成的「動(dòng)態(tài)數(shù)組」的生命周期可自由控制,也可以中途以 realloc ( ) 改變大小

查看完整回答
反對(duì) 回復(fù) 2018-02-11
  • 4 回答
  • 0 關(guān)注
  • 8508 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)