程序在內(nèi)存中是分段存儲(chǔ)的。 代碼段:存放語句轉(zhuǎn)換的數(shù)字;程序運(yùn)行時(shí)不可修改; 一:傳統(tǒng)數(shù)組(靜態(tài)數(shù)組)的缺點(diǎn) 1:數(shù)組的長度必須事先指定,并且是常整數(shù),不能是變量 int a[5]; 區(qū)分:靜態(tài)存儲(chǔ)與內(nèi)存的靜態(tài)開辟 二:為什么要?jiǎng)討B(tài)分配內(nèi)存 用來解決傳統(tǒng)數(shù)組的四個(gè)缺陷 三:動(dòng)態(tài)內(nèi)存分配舉例,以及動(dòng)態(tài)數(shù)組的構(gòu)造 方式:malloc函數(shù),在堆開辟空間 1:malloc是由程序員在堆棧動(dòng)態(tài)開辟空間 問題:p的分配類型是動(dòng)態(tài)的還是靜態(tài)的?當(dāng)調(diào)用free(p)后,p的內(nèi)存空間會(huì)被釋放么?
動(dòng)態(tài)擴(kuò)充數(shù)組的長度,也就是在程序運(yùn)行時(shí)動(dòng)態(tài)擴(kuò)充:realloc(首地址,總共字節(jié)數(shù))
注意:擴(kuò)充或者縮放的內(nèi)存單元是新開辟的內(nèi)存單元。這個(gè)過程中有值的拷貝過程。返回值是新開辟的地址空間首地址。 四:靜態(tài)內(nèi)存和動(dòng)態(tài)內(nèi)存的比較 靜態(tài)開辟的內(nèi)存:在棧中開辟,由編譯器分配,由系統(tǒng)自動(dòng)釋放 五:跨函數(shù)使用內(nèi)存的問題
|
|