我找不到在異常處理期間創建異常類實例的信息?在哪個內存區域(堆棧,堆棧,靜態存儲等)?我認爲它不在堆棧上,因爲堆棧展開...在哪個內存區域創建異常類實例?
7
A
回答
5
從標準沒有問題:
15.2.4:對於被拋出的異常的臨時副本的內存是 分配以非特定的方式,除了3.7.3.1中提到的以外, 。
而且3.7.3.1說:
3.7.3.1:所有的對象既不具有動態 存儲時間也不是地方有 靜態存儲時間。這些對象的存儲 將持續該程序的持續時間 (3.6.2, 3.6.3)。
3
答案是「在由編譯器管理的神祕區域中 - 嚴格地說,標準沒有指定它們必須存儲在哪裏。
0
例外總是被拋出價值因此,即使分配在堆棧
1
是廚房引用的標準,沒有具體說明。大多數實現從堆中分配它們,因爲它們需要在堆棧展開過程中生存,這可能會刪除堆棧框架(當向函數外部拋出時)或創建新框架(調用析構函數等)。 GCC使用內置功能__cxa_allocate_exception
來分配內存。
相關問題
- 1. 在哪個類中創建Retrofit實例?
- 2. 在類內部創建類的實例
- 3. .Net中創建的內存不足異常對象在哪裏?
- 4. 在哪裏創建實例
- 5. 創建域類在常規
- 6. 如果我想創建一個類的實例,異步操作異常
- 7. NullPointerException異常創建通用類型的實例
- 8. 創建一個域類的一個實例,一個Grails腳本
- 9. Ruby異常實例在哪裏保存消息?
- 10. 如何在java中創建哪個實例無法創建?
- 11. 在Application_Start上創建一個類實例
- 12. ExecutorService - 在方法中創建新實例vs每個類創建一個實例
- 13. 如何在可用區域創建Google雲實例?
- 14. 創建第二個實例時拋出異常
- 15. 異常在匿名內部類例如
- 16. 區別在哪裏和哪個區域
- 17. 在哪裏創建會話實例?
- 18. 在哪裏創建HibernateUtil實例Java Servlet
- 19. Singleton:在哪裏創建實例?
- 20. 在類本身內創建一個實例
- 21. 是否可以在區域內創建區域?
- 22. 有沒有辦法找出創建哪個類實例'this'
- 23. 異常創建類org.apache.struts.validator.DynaValidatorForm
- 24. C++創建類異常
- 25. 如何在創建MongoClient實例時捕獲異常
- 26. 所有實例在創建命名管道時出現異常
- 27. 如何從超類中捕獲的異常中創建子類實例?
- 28. 如何在使用Mockito創建新類的實例時模擬異常
- 29. 使用領域的內存異常
- 30. 將類限制爲最多一個實例時拋出哪個Python異常?