c 複習 動態記憶體管理。

2021-08-21 19:50:39 字數 1170 閱讀 3255

在c語言中,我們通常都會使用malloc、calloc、realloc和free來進行動態記憶體管理。

malloc、calloc、realloc用來在堆上開闢空間。

free用來釋放申請的空間。

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

//malloc函式會申請對應大小的空間,返回值型別為void*

//需要根據所需要的型別進行強制型別轉換

if (ptr1 != null)

//free對申請記憶體進行釋放,防止記憶體洩漏

int* ptr2 = (int*)calloc(10, sizeof(int));

//calloc函式會申請對應大小空間,並設定初始值為0

//返回值型別同樣為void*

realloc(ptr2, 20 * sizeof(int));

//realloc會改變原有空間大小,如果不能改變,就開闢出乙個新的空間

//將原內容複製進去,不進行初始化

if (ptr2 != null)

上圖為具體使用方法。重點記住malloc、calloc開闢的空間均為需要手動計算需要開闢空間的大小,而且返回值為void*。

在c++中,我們有了新的動態記憶體管理的方法。

c++中通過new和delete運算子進行動態記憶體管理。

new用來開闢空間,而delete用來釋放空間。

int* p1 = new int;

//p1分配到4個位元組(1個int)的空間

int* p2 = new int(2);

//p2與p1分配空間大小一致,且初始化為2

int* p3 = new int[3];

//p3指向12個位元組(3個int)的空間

delete p1;

//c++中使用delete來對new的空間進行釋放

delete p2;

delete p3;

這裡值得注意的是new和delete,new和delete必須成對使用,不然依然會造成記憶體洩漏,甚至程式崩潰。

malloc/free與new/delete的區別

所以相比起來new/delete在使用中更加的方便,但在使用中一定要注意new/delete與new/delete的對應使用。

C 動態記憶體管理

我們都知道在c 中可以用new malloc動態分配記憶體空間,delete free釋放動態開闢的記憶體空間。1.那麼既然c 中有了可以動態開闢記憶體的函式為什麼又要有new delete呢?c 中的malloc free是繼承c語言中的malloc free,它的用法和在c語言中的用法一模一樣。...

C 動態記憶體管理

1 總結並剖析malloc free和new delete之間關係和差異。1 他們都是動態記憶體管理的入口 2 malloc要計算空間大小,返回值要強轉 new自動計算位元組大小,返回值是相應型別的指標 3 malloc只開闢空間 new開闢空間 呼叫建構函式初始化 delete呼叫析構函式清理 釋...

c 動態記憶體管理

c語言動態記憶體管理 c中關於動態記憶體的標準庫函式 malloc calloc realloc free 以下是關於這幾個函式的介紹 1 malloc 用於動態開闢記憶體 堆空間 返回型別為void 引數 size t size 是無符號整型表示要開闢的空間大小,單位是位元組,2 calloc 用...