C 簡單動態記憶體開闢(1)!!

2021-08-03 14:31:50 字數 1508 閱讀 3677

malloc函式

在c語言標準庫裡面提供了函式malloc,這個函式是想記憶體池裡面申請記憶體(位元組為單位)。當乙個程式另外需要一些記憶體的時候就可以呼叫malloc函式來獲取一塊適合的記憶體,當使用者呼叫成功時,函式會返回乙個記憶體的位址。注意:這裡申請成功的記憶體並沒有初始化,裡面存的是一些隨機值,因此當申請成功一塊記憶體的時候初始化非常有必要。

#include#include #include int main()

for (i=0;i<10;i++)

free(p); //free函式將申請好的 記憶體釋放

memset(p,0,10*sizeof(int)); //memset函式將釋放掉的記憶體進行初始化為0

注:malloc函式一定要和free函式成對使用,否則將會造成記憶體洩露free函式這個函式是釋放掉用malloc函式申請的記憶體,free函式的引數要麼是null,要麼是用malloc函式申請成功的一塊記憶體的位址,當呼叫完free函式時,申請成功的記憶體會還給作業系統,但是這塊記憶體的資料並沒有銷毀,這是就編寫程式時候就要在free函式後面對這塊記憶體裡面的資料進行銷毀(一般初始化成0)。這樣就進一步提高了了**的安全性。

calloc函式

calloc函式功能和malloc函式相似,但是呼叫calloc函式申請的記憶體是經過初始化的,calloc函式將申請的記憶體初始化成0.他們的而不同點在於calloc函式的引數包括所需元素的個數和每個元素的位元組數,根據這些引數,函式可以知道開闢多大的記憶體。

realloc函式realloc函式適用於修改一塊原來已經分配好的記憶體,使用這個函式可以將這塊記憶體擴大或者縮小,在擴大的時候,realloc函式是另外開闢一快記憶體,同時將原來記憶體裡面的資料進行複製到新開闢的記憶體裡面,達到擴大記憶體的母的,這時值得注意的是,後面的指標就不可以指向原來開闢的那快記憶體的位址。在縮小記憶體時候,同樣是另外開闢一塊記憶體,但是在複製的時候,在多餘的那塊記憶體裡面的資料就會被拿掉,其餘的資料保留。

C動態記憶體開闢

動態記憶體開闢 malloc calloc realloc 都是在堆上申請空間 一 malloc和free void malloc size t size 動態開闢記憶體 include include include int main int ptr int malloc 10 sizeof in...

動態記憶體開闢

記憶體分配有三種方式 1.從靜態儲存區分配,生命週期隨程式的結束而結束,比如全域性變數,static變數 2.從棧空間分配,函式呼叫完其被自動釋放 3.從堆空間分配,即動態記憶體開闢,比如 malloc,calloc,realloc,何時申請何時釋放 malloc 函式原型void malloc s...

動態記憶體開闢

記憶體分配有三種方式 1.從靜態儲存區分配,生命週期隨程式的結束而結束,比如說全域性變數,static變數 2.從棧空間分配,函式呼叫完成後被自動釋放 3.從對空間分配,即動態記憶體開闢,比如malloc,calloc,realloc malloc calloc realloc和free mallo...