1

我遇到了一个非常奇怪的段错误,我今天最终修复了它。看来问题是我在堆栈上分配了一个非常大的数组,这导致了问题。

我的问题是,您是否总是在堆栈溢出时收到 SEGV 信号?是否有任何特殊信号可以提醒存在堆栈溢出问题?

我正在使用 g++ 和 gdb。

4

1 回答 1

2

Unix信号意义上的“信号”显然是SEGV。:) 如果你的意思是像使用诊断工具这样的信号,它会告诉你什么时候发生了不好的事情,你可以尝试 valgrind,但实际上,你的系统只是告诉你。并且在编译时知道堆栈是否会溢出是不可能的,部分原因是堆栈大小限制是一个运行时参数,而且我想如果你知道它会是什么先验,你仍然会遇到类似的东西停机问题。

于 2012-05-14T00:58:29.180 回答