new和delete已經完全包含malloc和free的功能,並且更強大、方便、安全。使用動態分配記憶體時不能忘記釋放記憶體,不要忘記出錯處理!下面先看new和delete的基本使用方法。
複製純文字新視窗
#include
using
namespace std;
intmain()
//釋放記憶體
delete i;
delete j;
delete f;
delete
iarr;
//注意陣列的刪除方法
return0;
}
#include using namespace std;輸出結果:int main ( )
//釋放記憶體
delete i;
delete j;
delete f;
delete iarr; //注意陣列的刪除方法
return 0;
}
複製純文字新視窗
#include
#include
using
namespace std;
intmain()
delete
arr;
//例外出錯處理
trycatch
(bad_alloc
xa)//強制例外時不丟擲錯誤,這時必須要判斷指標
double
*ptr =
new(nothrow)
double
[100000
];if
(!ptr)
delete
ptr;
cout <<
"記憶體分配成功!"
<< endl;
return0;
}
#include #include using namespace std;輸出結果:int main ( )
delete arr;
//例外出錯處理
try catch (bad_alloc xa)
//強制例外時不丟擲錯誤,這時必須要判斷指標
double *ptr = new(nothrow) double[100000];
if (!ptr)
delete ptr;
cout << "記憶體分配成功!" << endl;
return 0;
}
記憶體分配成功!前面已經用了很多了。
複製純文字新視窗
#include
using
namespace std;
class
classa
intgetx()}
;int
main()
cout <<
"x = "
<< p->
getx
()<< endl;
delete p;
//呼叫析構函式
return0;
}
#include using namespace std;執行結果:class classa
int getx()
};int main ( )
cout << "x = " << p->getx() << endl;
delete p; //呼叫析構函式
return 0;
}
x = 200
C new和delete的用法
對於計算機程式設計而言,變數和物件在記憶體中的分配都是編譯器在編譯程式時安排好的,這帶來了極大的不便,如陣列必須大開小用,指標必須指向乙個已經存在的變數或物件。對於不能確定需要占用多少記憶體的情況,動態記憶體分配解決了這個問題。new和delete運算子是用於動態分配和撤銷記憶體的運算子。一 new...
C New和Delete 用法知其然
new和delete都是c 常用關鍵字,但是內部原理著實不簡單,我此篇是站在淺學用之的角度來歸納其表面使用和淺層原理。如果想深入理解這兩個關鍵字我推薦一下這篇部落格 首先在用法明確幾點 1.他們是系統關鍵字。2.他的標準實現在c 標準標頭檔案是 include 實際上引用了的話會間接引用到 3.我們...
c new和delete簡單探索
使用標準庫函式operator new或者operator new在堆記憶體中分配出一塊足夠大的記憶體 呼叫相應的建構函式構造出物件並賦初值,物件安排在步驟1的記憶體上 定位new 返回指向這塊記憶體的指標 呼叫物件的析構函式 呼叫標準庫函式operator delete或者operator del...