new和delete都是c++常用關鍵字,但是內部原理著實不簡單,我此篇是站在淺學用之的角度來歸納其表面使用和淺層原理。
如果想深入理解這兩個關鍵字我推薦一下這篇部落格:
首先在用法明確幾點:
1.他們是系統關鍵字。
2.他的標準實現在c++標準標頭檔案是#include
(實際上引用了的話會間接引用到)
3.我們大部分最經常使用它的時候,實際是把他們作為一種運算子函式來使用
(如::operator delete (p)等效於delete p),
使用目的就是靈活的申請記憶體上的空間並靈活使用後再最終釋放。
4.像任何運算子一樣,他們可以被過載overload
(除非你深知原理別輕易玩這兩個的過載,大部分時候我們也不這麼玩過載)
總結一下最簡單的用法(免誤導初學先只談最常用用法)。
注意:new 和 delete 成對
new 和 delete 成對
普通:
//例子中myclass可以換成任意其他型別包括基礎型別int什麼的
myclass *p=new myclass();//申請記憶體,返回指標,申請失敗直接異常
delete p; //釋放指向的申請記憶體
p=nullptr;
//為了防止野指標
陣列
myclass *arr=new myclass[8];
deletearr; //釋放指向的申請記憶體
arr=nullptr;
//為了防止野指標
C new和delete的用法
對於計算機程式設計而言,變數和物件在記憶體中的分配都是編譯器在編譯程式時安排好的,這帶來了極大的不便,如陣列必須大開小用,指標必須指向乙個已經存在的變數或物件。對於不能確定需要占用多少記憶體的情況,動態記憶體分配解決了這個問題。new和delete運算子是用於動態分配和撤銷記憶體的運算子。一 new...
C new和delete的使用
new和delete已經完全包含malloc和free的功能,並且更強大 方便 安全。使用動態分配記憶體時不能忘記釋放記憶體,不要忘記出錯處理!下面先看new和delete的基本使用方法。複製 純文字新視窗 include using namespace std intmain 釋放記憶體 dele...
c new和delete簡單探索
使用標準庫函式operator new或者operator new在堆記憶體中分配出一塊足夠大的記憶體 呼叫相應的建構函式構造出物件並賦初值,物件安排在步驟1的記憶體上 定位new 返回指向這塊記憶體的指標 呼叫物件的析構函式 呼叫標準庫函式operator delete或者operator del...