c - C 程序中的 Seg 错误

标签 c debugging gdb

我有一个超过 300 行的程序,除了导致段错误的 fclose 之外,100% 运行...现在,我什至无法让我的程序运行。 gdb 给了我这个错误,老实说我不知道​​如何解释

    ____strtol_l_internal (nptr=0x0, endptr=0x0, base=10,
       group=<value optimized out>, loc=0x349c78d580) at ../stdlib/strtol_l.c:298
       298       while (ISSPACE (*s))

谁能告诉我这是什么意思?

 readLinesFromFile(FILE* fPtr, int* num1, int* num2, char** strs, int lines)
 {
  int i;

  char data[50];

for (i = 0; i < lines; i++){
    fgets(data, 50, fPtr);
    strcpy (*(strs + i), strtok(data, " "));
    *(num1 + i) = atoi(strtok(NULL, " "));
    *(num2 + i) = atoi(strtok(NULL, " "));
}

最佳答案

您确定在调用 fclose 时会触发 SIGSEGV 吗?

看起来您只是简单地传递一个 NULL 指针作为 strtol 函数的第一个参数(在代码的其他部分)

另一个选择可能是堆栈完全困惑。

尝试使用gdb运行它,当它崩溃时使用命令where查看堆栈

关于c - C 程序中的 Seg 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14933904/

相关文章:

C MPI - 没有明显原因的崩溃 - 程序接收到信号 SIGSEGV

python - GDB 在给定内存区域中查找指针

c++ - 最小化调试信息的大小以在远程位置进行测试

c - 二维字符数组的内存分配

c - 在C中使用多线程做矩阵乘法

将 char* 转换为 int

c - 用于修改正在运行的 C 程序的行为的脚本

c# - 发布和调试之间的不同 C# 输出

xcode - 如何在 mac 的终端中使用 g++?

c# - 通过扩展方法调试