發(fā)布于:2021-02-07 14:10:20
0
723
0
C中的malloc是什么?
malloc()函數(shù)代表內(nèi)存分配。它是一個(gè)用于動(dòng)態(tài)分配內(nèi)存塊的函數(shù)。它保留指定大小的內(nèi)存空間,并返回指向內(nèi)存位置的空指針。返回的指針通常是void類型。這意味著我們可以將malloc函數(shù)分配給任何指針。
語法
ptr = (cast_type *) malloc (byte_size);
ptr是一個(gè)cast類型的指針。
malloc函數(shù)返回一個(gè)指向字節(jié)大小的分配內(nèi)存的指針。
Example: ptr = (int *) malloc (50)
當(dāng)此語句成功執(zhí)行時(shí),將保留50字節(jié)的內(nèi)存空間。保留空間的第一個(gè)字節(jié)的地址分配給int類型的指針ptr。
考慮malloc實(shí)現(xiàn)的另一個(gè)示例:
#include <stdlib.h>
int main(){
int *ptr;
ptr = malloc(15 * sizeof(*ptr)); /* a block of 15 integers */
if (ptr != NULL) {
*(ptr + 5) = 480; /* assign 480 to sixth integer */
printf("Value of the 6th integer is %d",*(ptr + 5));
}
}
輸出:
Value of the 6th integer is 480
注意,sizeof(*ptr)被用來代替sizeof(int),以便在以后將*ptr聲明類型轉(zhuǎn)換為不同的數(shù)據(jù)類型時(shí)使代碼更加健壯。
如果內(nèi)存不足,分配可能會(huì)失敗。在本例中,它返回一個(gè)空指針。因此,應(yīng)該包含檢查空指針的代碼。
請(qǐng)記住,分配的內(nèi)存是連續(xù)的,可以將其視為數(shù)組。我們可以使用指針?biāo)惴▉碓L問數(shù)組元素,而不是使用括號(hào)[]。我們建議使用+來引用數(shù)組元素,因?yàn)槭褂胕ncrementation++或+=會(huì)更改指針存儲(chǔ)的地址。
Malloc函數(shù)還可以用于字符數(shù)據(jù)類型以及復(fù)雜數(shù)據(jù)類型(如結(jié)構(gòu))。
作者介紹
熱門博客推薦