【问题标题】:Forcing C to make an out of bound error and crash [closed]强制 C 出现越界错误并崩溃 [关闭]
【发布时间】:2016-03-22 10:26:12
【问题描述】:

我知道这是一个奇怪的问题,但我正在制作一个函数,它应该会使程序崩溃并发送错误。我所做的事情被零除,这给出了“浮点错误”。

有没有办法强制 C 给出诸如“索引超出范围”之类的错误或类似的错误? - 或者最适合的错误是带有一些指针魔法的“分段错误”?

int a = 10/0;       //Floating point error
//int *p = (int *)0;  //Segmentation fault

编辑: 分段错误是由另一件事引起的!

【问题讨论】:

  • Linux?视窗? macOS?
  • only int *p = (int *)0; 给了你段错误?
  • “最合适的错误”是什么意思?最适合什么?
  • @alain: 对于“索引越界”
  • @SouravGhosh 不,你是对的。这是程序中的另一件事。

标签: c error-handling


【解决方案1】:

在基于 UNIX 的操作系统中,大多数错误都表示为信号。您可以向自己发送一个信号,它会被应用程序和 O/S 解释为该事件已经发生。

因此,要从函数中模拟段错误,您可以这样做:

#include <signal.h>

raise(SIGSEGV);

您可以用相同的方式模拟其他错误,例如用于浮点异常的 SIGFPE、用于错误系统调用的 SIGSYS 等。

【讨论】:

  • 谢谢。这是最干净的。
猜你喜欢
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
  • 2022-06-24
  • 2014-05-29
  • 1970-01-01
相关资源
最近更新 更多