我的程序是"计算器"大数字上的(+, - ,*,/,%)和我使用数组来做。 除了精确的分数之外,它做得很好。 示例:使用" 235904955217602177779531391566404600024660137230836722833991048650026087431751987982144871621272505722819200445400/291608731024614095661614",它会返回正确答案,但会立即崩溃。我一直在调试并收到SIGSEGV错误。但它正在计划结束时发生。我不知道这个错误来自哪里。
[debug]Program received signal SIGSEGV, Segmentation fault.
#include <stdio.h>
...
答案 0 :(得分:0)
分段错误,即程序退出时的SIGSEGV通常在您损坏内存时发生,例如在缓冲区溢出的情况下。换句话说,它并不总是与腐败时刻相对应,但可能在它之后很久才出现。因此,首先尝试启用并修复所有编译警告,添加输入参数检查,如果索引在边界内,则在访问缓冲区之前断言,然后使用某些静态代码分析器(例如,使用静态代码分析器)是一种好的做法。皮棉。这是为了确保代码质量。
如果你总是用一些特定的输入捕获它的另一个选择 - 试图隔离那些应该责备的代码:通过改变输入和/或通过代码中的短切函数,你最终可以找到它。但这不是系统性方法,可能存在其他故障情况。