Q
NULL的實例
7
A
回答
14
沒有,obj
不能NULL
。
如果new
失敗,則會拋出std::bad_alloc
異常。如果沒有拋出異常,則obj
保證指向Object
的完全初始化實例。
有不拋出異常
Object *obj = new(nothrow) Object();
在這種情況下new
變體,obj
將NULL
如果new
失敗,並且std::bad_alloc
異常不會被拋出(雖然Object
的構造顯然仍然會拋出異常)。
在一些較早的編譯器上,new
可能不會拋出異常,而是返回NULL
,但這不符合標準兼容行爲。
如果你已經超載operator new
,它可能會有不同的行爲取決於你的實現。
2
否,除非您禁用例外或超載std::new
以執行非標準操作(拋出故障時拋出std::bad_alloc
)。
(我不知道什麼時候例外被中止std::new
的行爲,但在這一個討論可here ...)
+1
標準進行檢查NULL
沒有定義如何新的行爲異常時,禁用使用,因爲標準沒有規定例外情形可以被禁用的世界。這取決於每個單獨的編譯器實現。 –
2011-06-12 08:01:07
4
不,您的確切線不能表現得那樣。如果沒有拋出異常,obj
將始終指向有效的內存。下面這行,不過,將返回0
如果內存無法分配:
Object* obj = new (std::nothrow) Object();
3
new
拋出std::bad_alloc
是分配未SUCESSFUL。所以你應該抓住這個例外。
你應該不拋出新的,如果你想後new.
相關問題
- 1. 單例實例返回null
- 2. AsciiIo實例爲null
- 3. 腳本實例返回null
- 4. Firebase實例Id返回null
- 5. jsp useBean spring實例null
- 6. 簡單的彈簧JPA的servlet實例,crudrepository實例爲null
- 7. Grails的新域實例返回null
- 8. 用NULL替換字符串的實例
- 9. 類實例化的NULL參數
- 10. Amazon EC2的博託返回null實例
- 11. SharedPreferences值在新實例後返回null
- 12. CKeditor實例是null還是undefined?
- 13. PDO數據庫實例返回null
- 14. QPluginLoader實例總是返回null
- 15. java對象實例化返回null?
- 16. 在Gstreamer中創建Null實例0.10
- 17. 實例變量爲null for prepareForSegue方法
- 18. Object.create(null)的用例?
- 19. SupportPlaceAutocompleteFragment null例外
- 20. C# - 如何將NULL設置爲不能爲NULL的實例方法?
- 21. 的WordPress:對象實例中的functions.php定義顯示NULL在footer.php
- 22. 返回null的json對象的類實例字段
- 23. Android LinearLayout null例外
- 24. E/HttpHandler:例外:null
- 25. 動作方法傳遞類型的實例而不是null
- 26. 這個== null裏面的.NET實例方法 - 爲什麼可能?
- 27. 日食自動生成的實例= NULL遞歸調用
- 28. DataInputStream的Java Socket]實例打印繼續null
- 29. C#實體框架存儲的值返回null例外
- 30. 如何使用StructureMap將null作爲接口的默認實例?
或者除非你已經做了'#define new new(nothrow)'或許? ;) – 2011-06-12 09:59:03
@Karl Knechtel:這是未定義的行爲 – Puppy 2011-06-12 10:52:30
當你沒有例外編譯時會發生什麼?它會自動使用nothrow版本嗎? – 2011-06-12 11:20:26