發(fā)布于:2021-02-07 14:10:20
0
723
0
C中的malloc是什么?
malloc()函數(shù)代表內(nèi)存分配。它是一個用于動態(tài)分配內(nèi)存塊的函數(shù)。它保留指定大小的內(nèi)存空間,并返回指向內(nèi)存位置的空指針。返回的指針通常是void類型。這意味著我們可以將malloc函數(shù)分配給任何指針。
語法
ptr = (cast_type *) malloc (byte_size);
ptr是一個cast類型的指針。
malloc函數(shù)返回一個指向字節(jié)大小的分配內(nèi)存的指針。
Example: ptr = (int *) malloc (50)
當(dāng)此語句成功執(zhí)行時,將保留50字節(jié)的內(nèi)存空間。保留空間的第一個字節(jié)的地址分配給int類型的指針ptr。
考慮malloc實現(xiàn)的另一個示例:
#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ù)類型時使代碼更加健壯。
如果內(nèi)存不足,分配可能會失敗。在本例中,它返回一個空指針。因此,應(yīng)該包含檢查空指針的代碼。
請記住,分配的內(nèi)存是連續(xù)的,可以將其視為數(shù)組。我們可以使用指針?biāo)惴▉碓L問數(shù)組元素,而不是使用括號[]。我們建議使用+來引用數(shù)組元素,因為使用incrementation++或+=會更改指針存儲的地址。
Malloc函數(shù)還可以用于字符數(shù)據(jù)類型以及復(fù)雜數(shù)據(jù)類型(如結(jié)構(gòu))。