是否存在用于处理堆栈溢出的已定义行为?
除了终止这个过程之外,似乎还有很多事情可以完成.我只是想知道是否有人可能知道C标准对此有何看法.
该标准不需要使用堆栈,并且没有关于堆栈溢出的说法.
C99标准没有定义堆栈; 它只讨论摘要中的自动或分配存储,而具有溢出检测的连续堆栈只是实现自动存储的一种机制.
该标准的第7.14节将SIGSEGV定义为"无效访问存储"时出现的信号.C的实现不需要生成任何信号,但是如果检测到堆栈溢出,则使用连续的固定大小堆栈*的实现通常用信号SIGSEGV.
您可以为SIGSEGV注册信号处理函数,但它不能返回 - "[i] f并且当函数返回时,如果sig的值是SIGFPE,SIGILL,SIGSEGV或任何其他实现定义的值对应于a计算异常,行为[u] r未定义".
(*并不是说我已经故意使用C实现但没有,但我不知道C标准中的任何内容阻止使用在其他环境中实现可扩展自动存储域的常用技术)