我使用ncurses的,每当我得到一个segfault,ncurses的不正确释放终端的控制(因为endwin()从未被调用)。我设置了一个信号处理程序:最后块分割故障(C++)
void handler(int signum) {
endwin();
exit(EXIT_FAILURE);
}
但这个问题是内存设计缺陷被忽略,因为endwin后反对推迟到()。我对C++相当陌生; segfaults可以被捕获为异常,这样我可以有一个finally块?还是有一些重新从处理程序内部重新发布segfault?
可能的重复[如何在Linux中捕获段错误?](http://stackoverflow.com/questions/2350489/how-to-catch-segmentation-fault-in-linux) – casablanca 2010-11-13 01:02:00
只是出于兴趣,什么如果在信号处理程序中放置断点,会发生什么? gdb可以回到原始段落的上下文吗? – 2010-11-13 01:30:20
C++没有finally块。使用一个哨兵类,它的析构函数调用endwin(); – 2010-11-13 05:57:25