C new關鍵字丟擲bad alloc

2021-10-09 14:34:50 字數 547 閱讀 7147

c++ new 關鍵字底層呼叫了malloc來分配記憶體,但是會出現申請記憶體失敗的情況。當new 申請記憶體失敗時,會丟擲bad_alloc異常,那麼針對這種情況,我們有兩種處理方式。

當new獲取記憶體失敗時,丟擲bad_alloc異常,我們可以捕獲異常,但是這種方法非常繁瑣,我們在程式中可能會大量用到new,我們要加很多try-catch塊。對程式設計師不友好。

#include #include using namespace std;

int main()

while(p);

}catch(const std::exception& e)

return 0;

}

第二種方式是 new(std::nothrow) 我們通過這種方式,可以返回為null,如果返回為空,說明申請記憶體失敗。

#include #include int main()

while(p);

if(null == p)

return 0;

}

C new關鍵字小結

在 c 中,new 關鍵字可用作運算子或修飾符。new 運算子用於在堆上建立物件和呼叫建構函式。new 修飾符用於隱藏基類成員的繼承成員。new 運算子1.用於建立物件和呼叫建構函式 例 class test myclass new class test 2.也用於為值型別呼叫預設的建構函式 例 i...

C new關鍵字用法

c 中的new用法總結 1.new operator 這是最常見的用法,如 class a a a new a 2.placement new 這個new僅在乙個已經分配好的記憶體指標上呼叫建構函式,因此會覆蓋原來的內容,如 a a1 new a a a2 new a1 a 那麼a2會覆蓋a1的值,...

new關鍵字 this關鍵字 base關鍵字

使用new,所做的三件事 1.類是引用物件,引用物件是在堆中開闢空間 在堆中開闢空間 2.在開闢的堆空間中建立物件 3.呼叫物件的構建函式 4.隱藏父類成員 子類的成員可以與隱藏從父類繼承的成員,類似於重寫。public new void sayhello this關鍵字的使用 1.代表當前類的物件...