如果我在char *a=new char[1000]
這樣的堆上聲明瞭一些東西,並且主程序停止瞭如果沒有delete[]
調用會分配內存會發生什麼?它仍然在堆上或自動釋放?C++堆內存分配/釋放
2
A
回答
8
就C++而言,它會發生什麼是完全未定義的。但是,幾乎任何合理的操作系統都會在進程終止時清理進程分配的內存。然而,這是一種非常好的做法,需要自己清理。
0
通常它會被操作系統清除。
0
當您的應用程序因任何原因崩潰或中止時,操作系統在正常情況下回收內存。但是,這是不確定的。
2
的C++標準規定「結尾」你從main()
返回後不久 - 它解釋全局對象在之後的某一處被破壞,atexit()
和其他一些「我們正在退出」級的功能也得到main
後運行回報。但是,你的程序所在的內存不會被C++標準指定。這同樣適用於堆的內容。
如果系統中存在操作系統(C++沒有指定您必須擁有操作系統),則清除應用程序由操作系統決定。
相關問題
- 1. 在釋放C中分配的內存時發生堆損壞
- 2. 分配/釋放內存(Windows下的C++)
- 3. C - 釋放內存分配功能
- 4. 關於釋放內存分配C
- 5. C內存分配和釋放
- 6. 在C++中分配和釋放內存
- 7. 內存分配和釋放
- 8. 釋放分配的內存
- 9. 分配和釋放內存
- 10. 內存分配釋放
- 11. Ç - 內存分配和釋放內存
- 12. 內存分配和釋放內存
- 13. C++堆棧內存未被釋放
- 14. 指針釋放和堆內存,C++
- 15. 分配/釋放內存內循環
- 16. cudaFree和cudaFreeHost無法釋放堆分配的內存
- 17. 在自定義堆棧分配器中釋放內存
- 18. 釋放alloca分配的內存
- 19. 分配最近釋放的內存
- 20. 靜態分配的內存釋放
- 21. 釋放分配有newCString的內存
- 22. 在openCV中釋放內存分配
- 23. 釋放內存分配給Java中
- 24. 如何釋放Swingworker分配的內存?
- 25. 自動釋放內存分配
- 26. 誰負責釋放分配的內存?
- 27. 釋放動態分配的內存
- 28. 釋放由cudamallocpitch分配的內存
- 29. 強制Windows釋放分配的內存
- 30. 在C和C++中如何分配和釋放* array *內存?
一些術語:你**聲明**和**定義**名稱,如'a'在這裏。你**在堆上分配**對象。那麼,正式的,「免費店鋪」,但沒人說這個。 – 2013-03-12 17:14:47
重複http://stackoverflow.com/questions/6727383/dynamically-allocated-memory-after-program-termination – Saqlain 2013-03-12 17:16:55
@PeteBecker:我可以引用我的用戶信息,供人們這樣做時參考「C++沒有堆所以我拒絕回答你的問題「的事情? – 2013-03-12 17:33:24