動態記憶體分配
- 動態記憶體分配:即由程式設計師手動的進行記憶體空間的分配、記憶體空間的釋放的記憶體管理操作
- C++程式碼中,變數、陣列等物件的建立,是由C++自動分配記憶體的,稱之為(自動)靜態記憶體分配
- (自動)靜態記憶體管理,不會進行記憶體空間的自動清理。(無垃圾回收機制)
- 需要手動的管理記憶體,即手動分配,用完清理
new運算子
- 用於申請並分配記憶體空間並提供指向該空間的指標(記憶體地址)
- 基本語法:
- new type 申請普通變數空間
- new type[] 申請陣列空間
delete運算子
- 用於釋放記憶體,僅可用於new運算子申請的記憶體區域
- 基本語法:
- delete 指標 刪除普通變數空間
- delete[] 指標 刪除陣列空間
- 建議:寫完new後,立刻寫delete,然後再寫業務邏輯程式碼(避免忘記)
int *pt = new int;
*pt = 10;
cout << "申請記憶體空間存放:" << *pt << endl;
delete pt;
cout << "pt記憶體空間已釋放" << endl;
int *pt2 = new int[3];
pt2[0] = 1; // 指標也可以用下標, 等同於*(p+0)
*(pt2 + 1) = 2; // 等同於 pt[1]
cout << "*pt2申請記憶體空間大小:" << sizeof(pt2) << endl;
cout << *pt2 << endl;
cout << pt2[1] << endl;
delete[] pt2; // 釋放記憶體空間
cout << "pt2記憶體空間已釋放" << endl;