崩溃的程序与在C++中挂起(变得无响应)的程序之间有什么区别(或原因)?
当然,访问无效内存会导致程序崩溃.线程中的死锁可能导致程序挂起.其他原因是什么?
耗尽所有内存会导致程序挂起吗?或者崩溃?我在差异和原因之间有点困惑.
Leo*_*Hat 12
崩溃通常是由非法指令引起的,例如访问无效内存,除以零等.通常,这表现为由操作系统处理的众所周知的异常.
悬挂可以分为两个相当高级别的类别:
根据问题评论更新
@Pop,Kristo:我实际上正在检查挂起的代码,但我发现内存泄漏存在一些问题.但我不确定内存泄漏是否导致程序挂起. - jasonline
内存泄漏可能导致程序崩溃,但这取决于各种因素:
内存泄漏可能导致2个不好的事情 - 进程的内存使用量不断增加,以及内存碎片化.如果操作系统无法提供连续的内存块,则这两种情况都可能导致无法在线路上分配内存.
在C++中,如果new操作员无法分配内存,std::bad_alloc则会抛出异常.这很可能会被操作系统捕获,从而导致崩溃(除非您在应用程序中为此异常编写了特定的处理程序,并且能够更优雅地处理它).
| 归档时间: |
|
| 查看次数: |
4233 次 |
| 最近记录: |