用malloc和calloc分別實現同乙個功能。
如下:
#include
#include
void main()
check(p1);
return0;}
void check(int *p)
}printf("\n");
}
#include
#include
void main()
check(p1);
return0;}
void check(int *p)
}printf("\n");
}
上面兩段不同的** 基本上只有一行的差異
但是它們完成了相同的功能 動態的分配了一段空間。
記憶體空間,但兩者稍有區別。
malloc()函式有乙個引數,即要分配的記憶體空間的大小:
void *malloc(unsigned int size);
calloc()函式有兩個引數,分別為元素的數目和每個元素的大小
這兩個引數的乘積就是要分配的記憶體空間的大小。
void *calloc(unsigned n,unsigned size);
如果呼叫成功,函式malloc()和函式calloc()都將返回所分配的記憶體空間的首位址。
函式malloc()和函式calloc()的主要區別是前者不能初始化所分配的記憶體空間,
而後者能。如果由malloc()函式分配的記憶體空間原來沒有被使用過,
則其中的每一位可能都是0;反之,如果這部分記憶體曾經被分配過,則其中可能遺留有各種各
樣的資料。也就是說,使用malloc()函式的程式開始時(記憶體空間還沒有被重新分配)能
正常進行,但經過一段時間(記憶體空間還已經被重新分配)可能會出現問題。
函式calloc()會將所分配的記憶體空間中的每一位都初始化為零,也就是說,
如果你是為字元型別或整數型別的元素分配記憶體,那麼這些元素將保證會被初始化為0;
如果你是為指標型別的元素分配記憶體,那麼這些元素通常會被初始化為空指標;如果你為
實型資料分配記憶體,則這些元素會被初始化為浮點型的零。
C語言 malloc 函式與alloc 函式
c語言跟記憶體分配方式 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指令集...
C語言malloc函式
malloc 標頭檔案 include 原型 void malloc size t size 引數說明 size為需要分配的記憶體空間大小,單位是byte 函式說明 在堆區分配一塊size byte大小的記憶體空間,用於存放資料,這塊記憶體空間被分配後不會被初始化,因此這些記憶體空間對應的值是未知的...
C語言中的malloc與free函式
malloc函式的作用是在堆中開闢一塊指定大小的空間。如果開闢成功,返回空間首個位元組位址,失敗則返回null。free函式能夠釋放在堆中開闢的記憶體空間,傳入乙個任意型別的指標變數,指向指向被釋放區域的首位址。被釋放區域應是有malloc開闢的空間。需要注意的是 free釋放記憶體空間只是失去了對...