如果我在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