所以我最近制作了一个处理SIGSEGV信号的代码,例如在尝试使用单位指针时。但是,由于某种原因,堆栈溢出(由valgrind指示)无法调用SIGSEGV信号处理程序。
这是标准行为,还是只是GCC的怪癖?
此外,由于我一直在使用backtrace()功能来弄清楚出了什么问题,所以假设这是不可访问的是正确的,因为堆栈溢出意味着无法获得堆栈跟踪(例如堆栈太大而无法打印等)?
谷歌有关此信息实际上非常难,因为与“堆栈溢出”相关的任何内容都会发送到此站点。
答案 0 :(得分:2)
讽刺的是,没有堆栈溢出或C ++中的信号。因此,您看到的这种行为是特定于平台的某种未定义行为的表现形式。
答案 1 :(得分:0)
当堆栈溢出时,除了系统调用之外调用任何东西都是不可能的,因为函数调用会给溢出的堆栈增加更多。