1. 程式人生 > >關於動態記憶體的申請和釋放

關於動態記憶體的申請和釋放


#include<malloc.h>



關於malloc(p)和free(p):

malloc主要用來分配記憶體空間,通常是結合指標進行使用,通常是在聲明瞭一個指標之後,

為該指標所指向的資料分配一個記憶體空間,不然該指標就成為野指標了。如下:

int *p ;

p = NULL;

p = (int*)malloc(sizeof(10*int));

此兩條語句聲明瞭一個指標,並且為該指標所指向的資料申請了一個記憶體空間,該空間可

容納10個int型別的資料.另外,需要注意的是,在宣告一個指標的時候,一定要初始化該

指標,如"p = NULL",表示指標p不指向任何內容。這樣就能夠保證,就算不給該指標所指

向資料動態申請記憶體空間,該指標也不會成為危險的野指標。


而對於free(p),則是跟malloc成對使用,如果使用了malloc進行記憶體空間申請,則在

使用完該記憶體空間後,必須要有free來釋放該記憶體,釋放記憶體的實質,並沒有把指標p本身

幹掉,而是讓p不再指向該記憶體空間,讓出該記憶體空間的使用權,使其他指標能夠使用該內

存空間。該記憶體空間存的資料還是存在的。如下:

free(p);

p = NULL;


PS:以後寫程式碼,宣告指標的時候,直接初始化為NULL,如果需要進行記憶體空間申請,則

將malloc和free成對寫出,就像一開始寫程式就寫上return一樣。