一.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 無法滿足動態物件的要求。物件在建立的同時要自動執行建構函式,物件消亡之前要自動執行析...