C得到try&;保证堆芯转储不会崩溃的捕获?

C得到try&;保证堆芯转储不会崩溃的捕获?,c,linux,C,Linux,通常,当一个foo()出现内存问题时,整个程序只会进行内核转储、崩溃。但是,当核心转储发生在foo()中时,C是否有任何保护方法来保证程序不会崩溃,只是转到一个状态或简单地返回?在C中不能说for try and catch语句,但可以编写信号处理程序来捕获segfault。 这里有一个链接。 如果内存有问题,您希望它崩溃。否则,您的程序可能会表现出无法解释的奇怪行为。请放大@dbush注释,不幸的是,无法保证“内存问题”会使C程序崩溃—它只会给出错误的结果。你所能说的就是最终可能会发生崩溃。结

通常,当一个foo()出现内存问题时,整个程序只会进行内核转储、崩溃。但是,当核心转储发生在foo()中时,C是否有任何保护方法来保证程序不会崩溃,只是转到一个状态或简单地返回?

在C中不能说for try and catch语句,但可以编写信号处理程序来捕获segfault。 这里有一个链接。

如果内存有问题,您希望它崩溃。否则,您的程序可能会表现出无法解释的奇怪行为。请放大@dbush注释,不幸的是,无法保证“内存问题”会使C程序崩溃—它只会给出错误的结果。你所能说的就是最终可能会发生崩溃。结果也可能是不确定的,这取决于原因,特别是在多线程程序中。顺便说一句,标准C中没有
try
catch
。Windows C支持
\try
\u,除了
,但这是非标准的。谢谢大家的回复。我的意思是,不管怎样,当一个函数有内存问题时,不要让它内核转储,而是停止并显示一些消息。我在setjmp.h中搜索出一些函数,可能会有所帮助。还有其他解决方案吗?我不这么认为,函数知道只有在发生时才有核心转储。没有办法预测它(对于函数)。捕捉一个
SIGSEGV
通常没有帮助。如果堆栈被破坏,或者内存管理信息被删除、弄乱,或者WTF丢失,那么就没有机会从中恢复。