new delete擴充套件

2021-08-15 13:55:58 字數 647 閱讀 2365

一.new/delete工作機制

使用new表示式時發生的三個步驟

1.呼叫名為operator new的標準庫函式,分配足夠大的原始的未型別化的記憶體,一儲存指定型別的乙個物件

2.執行該型別的建構函式去初始化物件

3.返回指向新分配並構造的建構函式物件的指標

使用delete表示式時發生的步驟

1.呼叫物件的析構函式

2.呼叫名為operator delete的標準庫函式釋放物件所用的記憶體

operator new/delete庫函式

根據new表示式的呼叫機制,只需要將operator new放入private區域,便無法再建立堆物件

#include

#include using std::cout;

using std::endl;

//只能生成棧物件

class student

將析構函式放到private區域,便只能生成堆物件

#include #include using std::cout;

using std::endl;

//只能生成堆物件

class student

malloc free和new delete的區別

malloc free和new delete的區別malloc與free是c c語言的標準庫函式,new delete是c 的運算子。它們都可用於申請動態記憶體和釋放記憶體。對 於非內部資料型別的物件而言,光用maloc free無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件在消亡...

malloc free與new delete的區別

相同點 都可用於申請動態記憶體和釋放記憶體 不同點 1 操作物件有所不同。malloc與free是c c 語言的標準庫函式,new delete 是c 的運算子。對於非內部資料類的物件而言,光用maloc free 無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件消亡之前要自動執行析...

malloc free與new delete的區別

相同點 都可用於申請動態記憶體和釋放記憶體 不同點 1 操作物件有所不同。malloc與free是c c 語言的標準庫函式,new delete 是c 的運算子。對於非內部資料類的物件而言,光用maloc free 無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件消亡之前要自動執行析...