new申請記憶體失敗了乍辦

2021-09-24 23:25:28 字數 448 閱讀 6445

1.標準c++ 裡,如果 new 分配記憶體失敗,預設是丟擲異常的。

首先按c++標準的話,new失敗會丟擲bad_alloc異常

try

catch(bad_alloc &memexp)

{ //失敗以後,要麼abort要麼重分配

cerr<2.但是有些編譯器對c++標準支援不是很好,比如vc++6.0中new失敗不會丟擲異常,而返回0.

當然,標準 c++ 亦提供了乙個方法來抑制 new 丟擲異常,而返回空指標:

int* p = new (std::nothrow) int; // 這樣如果 new 失敗了,就不會丟擲異常,而是返回空指標

if ( p == 0 ) // 如此這般,這個判斷就有意義了

return -1;

new和malloc申請記憶體失敗後的處理

1.c 標準 new 失敗是丟擲異常的,visual c 6.0中返回乙個null指標.使用new std nothrow 可以保證失敗時返回null 因此完全可以 define new new std nothrow 2.使用 malloc calloc 等分配記憶體的函式時,一定要檢查其返回值是...

new與delete申請記憶體

malloc申請而來的只是記憶體,嚴格地說並不是 物件 new delete的引用就是要解決malloc帶來的問題 4個int,16個位元組 int p int malloc 16 for int i 0 i 4 i 在c 中,用new delete操作符取代malloc free 申請乙個物件 i...

new 與malloc申請記憶體區別

首先我們需要了解堆與棧的概念。區分堆記憶體與棧記憶體的區別。以及堆與棧訪問速度的差異的原因。1.屬性 new delete是c 關鍵字,需要編譯器支援。malloc free是庫函式,需要標頭檔案支援。2.引數 使用new 操作副申請記憶體分配時無須制定記憶體塊的大小,編譯器會根據型別資訊自行計算。...