在以前的節目我用下面的代碼來檢查內存分配失敗,通常不考慮替代方案:C++內存分配與operator new:檢測和處理分配錯誤的方法有哪些?
int* p_int = new int[10];
if(!p_int)
{
// We failed, so exit
return EXIT_FAILURE;
}
這種方法也記載here。
我發現here了語法的參考:
p_int = (nothrow) new int[10];
這表明,如果程序員不包括nothrow
「說法」,以新的,然後nullptr
支票是無效的?它是否正確?或者它依賴於操作系統?
據我所知,new
在try-catch
塊中沒有什麼意義,除非您可以從中恢復,因爲與此相關的開銷。這是否正確?
第一個代碼是沒有意義的,因爲'new int [10]'如果它返回就永遠不會失敗。 –
@LightnessRacesinOrbit使用try catch語句肯定會有一些開銷。 – user3728501
@ user3728501:爲什麼? –