堆的分配和釋放

2021-10-02 10:29:19 字數 1026 閱讀 2669

void

* malloc(

size_t

_size);

void

* calloc(

size_t

_count,

size_t

_size);

malloc函式在堆中分配引數_size指定大小的記憶體,單位:位元組,函式返回void *指標。

calloc函式分配記憶體的同時把記憶體清空。第乙個引數是所需記憶體單元數量,第二個引數是每個記憶體單元的大小(單位:字

節),calloc自動將分配的記憶體置0。

void

* realloc(

void

*p,

size_t

_newsize);

第乙個引數 p為之前用malloc或者calloc分配的記憶體位址,_newsize為重新分配記憶體的大小,單位:位元組。成功返回新分配

的堆記憶體位址,失敗返回null。

realloc不會自動清理增加的記憶體,需要手動清理,如果指定的位址後面有連續的空間,那麼就會在已有位址基礎上增加內

存,如果指定的位址後面沒有空間,那麼realloc會重新分配新的連續記憶體,把舊記憶體的值拷貝到新記憶體,同時釋放舊記憶體。

如果引數p等於null,那麼realloc與malloc功能一致。

void free(void *p);

free負責在堆中釋放malloc分配的記憶體。引數p為malloc返回的堆中的記憶體位址。

注:再釋放完後,將指標置空。

參考:黑馬程式設計師

堆記憶體的分配和釋放

示例 int i 10 int p int malloc sizeof int 在堆中分配乙個整數大小的記憶體.printf p,d n i,i printf p,d n p,p free p 必須要手動釋放堆記憶體.特殊示例 int main void test char p 列印結果 null ...

記憶體分配和釋放

自從學習了c語言,老師就教導我們說 對於動態記憶體的申請和釋放,一定要遵守 誰申請,誰釋放 的原則。在此原則的指導下,不僅是我 不僅是你,就連特級大師都設計了這樣怪怪的函式 函式說明 getwindowtext hwnd,lptstr,int 取得視窗標題。需要在引數中給出儲存標題所使用的記憶體指標...

記憶體分配和釋放

三 記憶體分配和釋放 自從學習了c語言,老師就教導我們說 對於動態記憶體的申請和釋放,一定要遵守 誰申請,誰釋放 的原則。在此原則的指導下,不僅是我 不僅是你,就連特級大師都設計了這樣怪怪的函式 函式說明 getwindowtext hwnd,lptstr,int 取得視窗標題。需要在引數中給出儲存...