數(shù)組動態(tài)內(nèi)存分配
1.當(dāng)數(shù)組被聲明時(shí),必須在編譯時(shí)知道它的長度。動態(tài)內(nèi)存分配允許程序?yàn)橐粋€(gè)長度在運(yùn)行時(shí)才知道的數(shù)組分配內(nèi)存空間。
2.malloc和calloc函數(shù)都用于動態(tài)分配一塊內(nèi)存,并返回一個(gè)指定該塊內(nèi)存的指針。
1>malloc的參數(shù)就是需要分配的內(nèi)存的字節(jié)數(shù)。
2>calloc的參數(shù)是需要分配的元素個(gè)數(shù)和每個(gè)元素的長度。calloc函數(shù)在返回前把內(nèi)存初始化為零。malloc函數(shù)返回時(shí)內(nèi)存并未以任何方式進(jìn)行初始化。
3>調(diào)用realloc函數(shù)可以改變一塊已經(jīng)動態(tài)分配的內(nèi)存的大小。增加內(nèi)存塊大小有時(shí)有可能采取的方法是把原來內(nèi)存塊上的所有數(shù)據(jù)復(fù)制到一個(gè)新的、更大的內(nèi)存塊上。當(dāng)一個(gè)動態(tài)分配的內(nèi)存塊不再使用時(shí),應(yīng)該調(diào)用free函數(shù)把它歸還給可用內(nèi)存池,內(nèi)存釋放后便不能再被訪問。
3.如果請求的內(nèi)存分配失敗,malloc、malloc和readlloc函數(shù)返回的將是一個(gè)NULL指針。
4.錯(cuò)誤的訪問分配內(nèi)存之外的區(qū)域所引起的后果類似越界訪問一個(gè)數(shù)組,但這個(gè)錯(cuò)誤還能破壞可用內(nèi)存池,導(dǎo)致程序失敗。
5.如果一個(gè)指針不是從早先的malloc、calloc或realloc函數(shù)返回的,它是不能作為參數(shù)傳遞給free函數(shù)的。

浙公網(wǎng)安備 33010602011771號