C语言 程序代码::块右端的SIGSEGV错误



我的程序是一个大数字的"计算器"(+,-,*,/,%),我正在使用数组来做到这一点。除了除法的精确数字外,一切都很好。示例:使用"235904955217602177779531391566404600024660137230836722833991048650026087431751987982144871621272505722819200445400/291608731024614095661614",它会返回好的答案,但随后立即崩溃。我一直在调试并收到 SIGSEGV 错误。但它发生在程序结束时。我不知道这个错误是从哪里来的。

这是调试错误。

[debug]Program received signal SIGSEGV, Segmentation fault.

这是完整的程序。

#include <stdio.h>
...

分段错误,即程序退出时的SIGSEGV通常发生在损坏内存时,例如在缓冲区溢出的情况下。换句话说,它并不总是与腐败的时刻相对应,但可以在腐败之后很久才出现。因此,首先尝试启用并修复所有编译警告,添加输入参数检查,如果索引在边界内,则在访问缓冲区之前断言,那么最好使用一些静态代码分析器,例如 lint。这是为了确保代码质量。

如果你总是用一些特定的输入来捕捉它,另一种选择是试图隔离应该受到指责的代码段:通过改变输入和/或通过代码中的快捷方式函数,你最终可以找到它。但这不是系统性方法,可能还有其他故障情况。

相关内容

  • 没有找到相关文章

最新更新