在C語(yǔ)言中,數(shù)組的內(nèi)存分配是在棧上或堆上完成的,具體取決于數(shù)組是在函數(shù)內(nèi)部聲明還是在全局范圍聲明。
在函數(shù)內(nèi)部聲明的數(shù)組會(huì)被分配在棧上。當(dāng)函數(shù)被調(diào)用時(shí),會(huì)在棧上分配一塊內(nèi)存空間來(lái)存儲(chǔ)數(shù)組元素。當(dāng)函數(shù)執(zhí)行完畢后,這塊內(nèi)存空間會(huì)被釋放。
在全局范圍聲明的數(shù)組會(huì)被分配在靜態(tài)存儲(chǔ)區(qū)(在C語(yǔ)言中通常是數(shù)據(jù)段)上。這塊內(nèi)存空間在程序運(yùn)行期間都是存在的,直到程序結(jié)束時(shí)才會(huì)被釋放。
需要注意的是,在棧上分配的數(shù)組大小是固定的,而靜態(tài)存儲(chǔ)區(qū)上分配的數(shù)組大小可以是變化的(通過(guò)動(dòng)態(tài)內(nèi)存分配函數(shù)如malloc來(lái)實(shí)現(xiàn))。