【发布时间】:2012-08-22 04:33:53
【问题描述】:
在 C++ 中,堆栈溢出通常会导致程序不可恢复的崩溃。对于需要真正健壮的程序,这是一种不可接受的行为,特别是因为堆栈大小是有限的。关于如何处理问题的几个问题。
有没有办法通过通用技术来防止堆栈溢出。 (一种可扩展、强大的解决方案,包括处理消耗大量堆栈的外部库等)
如果发生堆栈溢出,有没有办法处理它们?最好,堆栈会展开,直到有处理程序来处理这种问题。
有些语言的线程具有可扩展堆栈。类似的东西在 C++ 中可能吗?
任何其他有关 C++ 行为解决方案的有用 cmets 将不胜感激。
【问题讨论】:
-
标准甚至没有提到堆栈,您应该指定您的目标平台;一些平台提供了拦截堆栈溢出的方法,甚至在堆栈几乎耗尽时获得“堆栈溢出警报”。
-
就个人而言,我发现堆栈溢出不是要避免的,而是要拥抱的。看看这里的伟大社区!
-
Moing Duck 链接的现代版本? msdn.microsoft.com/en-us/library/89f73td2.aspx
-
使用智能编译器:
gcc -fsplit-stack,您很可能会出现堆栈溢出以及内存不足的情况。 -
从未发现堆栈溢出是个问题,(无论如何,在桌面操作系统上)。它确实发生了,但这只是因为我的严重错误,并且很容易调试。与绝大多数真正令人讨厌的错误相比,SO 不是问题。
标签: c++ error-handling crash stack-overflow