在防止野指針時候 我們有用到過malloc來給指針分配空間 下面瞭解m r c的用法以及區別
z轉載出處:http://blog.csdn.net/wjy2016/article/details/51944926
malloc()用法:
需要包含頭文件:#include<stdlib.h>
函數聲明:void *malloc(unsigned size);
說明:malloc 向系統申請分配指定size個字節的內存空間。返回類型是 void* 類型。void* 表示未確定類型的指針。C,C++規定,void* 類型可以強制轉換爲任何其它類型的指針。
注意事項:
第一、malloc 函數返回的是 void * 類型,如果你寫成:p = malloc (sizeof(int)); 則程序無法通過編譯,報錯:“不能將 void* 賦值給 int * 類型變量”。所以必須通過 (int *) 來將強制轉換。
第二、函數的實參爲 sizeof(int) ,用於指明一個整型數據需要的大小。如果你寫成:
int* p = (int *) malloc (1);
代碼也能通過編譯,但事實上只分配了1個字節大小的內存空間,當你往裏頭存入一個整數,就會有3個字節無家可歸,而直接“住進鄰居家”!造成的結果是後面的內存中原有數據內容全部被清空。
第三,malloc()只管分配內存,並不進行初始化,所以你得到的內存空間裏的值可能是隨機的。
calloc()用法:
需要包含頭文件:#include<stdlib.h>
函數聲明:void *realloc(void *ptr,unsigned newsize);
說明:有兩個參數,分別爲元素的數目和每個元素的大小,這兩個參數的乘積就是要分配的內存空間的大小。如果調用成功,函數calloc()都將返回所分配的內存空間的首地址。