malloc函式的用法

2022-07-29 08:36:11 字數 1338 閱讀 9353

malloc 是記憶體分配

分配的空間以位元組為單位

sizeof(int)*(n+1) 是求乙個位元組數的過程

sizeof(int)就是int型別的位元組數,再*(n+1),其實就是連續的n+1個int型數的空間所含的位元組數

前面二者合起來就是分配了大小為n+1個int型的空間所含的位元組數

此時(int*)是強制轉化為int型的指標,所以p就是乙個指向這連續n+1個int的int指標。

這種分配記憶體的方式是c語言中實現的,為什麼不直接指明位元組數,

而用sizeof(int)這種運算是因為對於不同的計算機,對於int的分配空間不一定相同,這樣有一定的移值性。

sizeof就是空間大小,malloc就是分配空間的意思,int整形

int* 將malloc分配的記憶體空間強制轉換為int型的指標。

(malloc申請的記憶體都是空型別 也就是 void * 但是,

這個記憶體取決於你怎麼去使用,所以,將其轉換為相應的型別是必要的!

malloc返回的是void*

)指標裡邊存放的只有位址而已 沒有指向的記憶體大小

比如你可以把char *型的指標強制轉換成int * 那麼引用的時候就會取4個位元組的記憶體

(原來只會取乙個位元組,這個就是強制轉換的意義了吧)

(int *)malloc(sizeof(int)) sizeof(int)=4 int佔4個位元組

(int *)malloc(sizeof(int *)) sizeof(int *)=4 指標佔4個位元組

(char *)malloc(sizeof(char)) sizeof(char)=1 char佔1個位元組

(char *)malloc(sizeof(char *)) sizeof(char *)=4 指標佔4個位元組

如果前面有宣告char *malloc();

那麼malloc(sizeof(char))/malloc(sizeof(char *))等同於上面後2個

至於為什麼要加 char * 這取決於malloc的左值,

因為malloc的左值是被宣告為指向不同型別的指標,

不同型別的指標之間是不能賦值的,所以需要char * 進行強制型別轉換

free(void *p)函式是用來釋放程式動態申請的記憶體。其引數是個指標型別。

在c當中,只有當使用了動態記憶體申請函式malloc calloc realloc申請記憶體之後,才可以使用free來釋放之。釋放之後就不能再使用了。

在c++中,除了上述函式之外,還有new操作之後,都要使用free函式。

切記,動態申請記憶體使用完後,一定要記得釋放,否則會有記憶體洩露問題。

malloc函式的用法

malloc函式是一種分配長度為num bytes位元組的記憶體塊的函式,可以向系統申請分配指定size個位元組的記憶體空間。malloc的全稱是memory allocation 動態記憶體分配 當無法知道記憶體具體位置的時候,想要繫結真正的記憶體空間,就需要用到動態的分配記憶體。返回型別是 vo...

malloc 函式的用法

函式宣告 函式原型 void malloc int size 說明 malloc 向系統申請分配指定size個位元組的記憶體空間。返回型別是 void 型別。void 表示未確定型別的指標。c,c 規定,void 型別可以強制轉換為任何其它型別的指標。從函式宣告上可以看出。malloc 和 new ...

malloc函式用法

void malloc int size 說明 malloc向系統申請分配size位元組的記憶體空間,返回型別為void 型別。int p p int malloc sizeof int 注意 1 因為malloc返回的是不確定型別的指標,所以返回之前必須經過型別強制轉換,否則編譯報錯,如 不能將v...