C New和Delete 用法知其然

2021-07-02 18:17:56 字數 1157 閱讀 2962

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