天堂亚洲欧美日韩国产综合_日韩欧美亚洲中文字幕本在线_国产日韩网红视频在线观看免费网站_国产在线一区二区日韩_97在线观看无码视频_女性裸体啪啪喷水无遮挡_日韩亚洲精品在线视频_国产老熟女八AV_久久精品国产亚洲Aⅴ无码偷窥_日韩午夜福利免费一级网站免费

網(wǎng)站開發(fā) APP開發(fā) 小程序開發(fā) SEO優(yōu)化 公司新聞

C語言--數(shù)組動態(tài)分配內(nèi)存

2018-05-30 09:25:24
1436

  傳統(tǒng)數(shù)組的長度必須事先制定好,且只能是常整數(shù),不能是變量,長度一旦定義便不能再改變;其占用的內(nèi)存我們無法手動釋放,在一個函數(shù)運行間該函數(shù)眾的數(shù)組所分配到的空間知道函數(shù)運行完之后才會被釋放;其不能夠跨函數(shù)運行.

  所以就出現(xiàn)了動態(tài)數(shù)組.動態(tài)數(shù)組很好的解決了傳統(tǒng)數(shù)組的這幾個缺陷.

  舉個例子:

  int *p=(int *)malloc(int size);

  上面這個語句分配了兩片內(nèi)存,一片內(nèi)存是動態(tài)分配的總共size個字節(jié),另一片是靜態(tài)的.

  malloc函數(shù)只有一個int類型的形參,表示的是分配的字節(jié)數(shù),malloc函數(shù)的作用就是請求size個字節(jié)的內(nèi)存空間,若成功便返回空間的地址,若失敗就會返回null.malloc函數(shù)能且只能返回一個第一個字節(jié)的地址,故我們需要把這個無任何實際意義的第一個字節(jié)的地址轉(zhuǎn)化為一個有實際意義的地址,比如:

  int *p=(int *)malloc(100);

  表示將非配好的100個字節(jié)的第一個字節(jié)地址轉(zhuǎn)化為int *類型的地址,這樣p就指向了第一個的四個字節(jié),p+1就指向了第二個四個字節(jié)...以此類推.

  動態(tài)數(shù)組釋放內(nèi)存

  freep(p)表示吧p所指向的內(nèi)存給釋放掉,而p自身的內(nèi)存是靜態(tài)的我們不能手動釋放,p本身的內(nèi)存只能在p變量鎖在的函數(shù)運行結(jié)束是系統(tǒng)自行釋放.

  靜動態(tài)內(nèi)存的比較:

  靜態(tài)內(nèi)存有系統(tǒng)自動分配,且由系統(tǒng)釋放;

  靜態(tài)內(nèi)存是棧分配的

  動態(tài)內(nèi)存是由開發(fā)者手動分配,手動釋放的;

  動態(tài)內(nèi)存是堆分配的

?