C 動態記憶體管理

2021-10-05 19:16:52 字數 1107 閱讀 1102

二、應用經驗

在c++程式中,記憶體需求都是在編寫程式的時候宣告變數來確定,但是程式在執行過程中需要動態分配記憶體的情況,c++語言將運算子new和delete合成在一起。

中通過new關鍵字向系統記憶體申請。

c++中的動態記憶體分配是基於資料型別進行的。

delete關鍵字用於記憶體釋放。

datatype *pointer =

new datatype;

// 其它**

delete pointer;

datatype可以是c語言的基本資料型別,也可以是結構體,還可以是類。

pointer是乙個指標,指向new返回的位址。

例如:

int

*pi=

newint

;// 動態分配乙個整數大小的記憶體

(*pi)=10

;delete pi;

// 釋放pi指向的記憶體

cgirl *pgirl=

new cgirl;

// 動態分配cgirl類

strcpy

(pgirl-

>name,

"西施");

pgirl-

>age=22;

pgirl.height=

168;

strcpy

(pgirl-

>sc,

"火辣");

strcpy

(pgirl-

>yz,

"漂亮");

pgirl-

>

show()

;delete pgirl;

// 釋放pgirl指向的記憶體

如果new出來的是類,相當於建立物件,所以會呼叫建構函式,delete的時候也會呼叫析構函式。

有些程式設計師認為動態記憶體分配是高大上的技術,但是,在實際開發中,需要動態分配記憶體的場景極少,string和vector已經足夠方便,如果不是非用不可的情況,採用動態分配記憶體就是給自己挖坑。

如果應用開發中一定要用動態記憶體分配技術,建議把它封裝在類中,並在析構函式中編寫釋放記憶體的**,防止記憶體洩漏。

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 用...