【问题标题】:segmentation fault when executing C code in ubuntu在 ubuntu 中执行 C 代码时出现分段错误
【发布时间】:2011-12-30 15:04:49
【问题描述】:

当我编译 c 文件时,gcc 没有返回错误,但在运行时出现了分段错误。调试器显示故障发生在这部分代码:

      int q=size[current];
      int *temp;
      temp = malloc ( sizeof(int)*q);
      for(i=0;i<size[current];i++)
        temp[i]=arr[current][i];

arr 已定义:

      int arr[20][200];

当前默认为 0。

我正在尝试将二维数组 (arr) 中的数组内容复制到临时数组中, 我试过不使用 malloc 但仍然是同样的问题。

ps:程序在windows上运行良好。

【问题讨论】:

  • 你能展示一下你是如何初始化arr的吗?
  • arr 是什么?你能给我们一些编译和展示问题的东西吗?
  • 能否添加 current 和 arr 的定义?另外,我建议你编译时启用所有警告,如果你还没有,因为它可能会给你一个提示。
  • 如何在循环中填充size[current] 女巫是i 的上限?
  • 学习使用gcc -g -Wall 编译和使用gdb 调试器。

标签: c linux segmentation-fault runtime-error


【解决方案1】:

您显示的代码没有任何问题(我可以看到)。

您应该采取的第一步是在 Valgrind 下运行您的程序,并修复它报告的所有错误。

如果 Valgrind 报告您不理解的错误,请使用 Valgrind 输出更新您的问题。

如果 Valgrind 没有报告任何内容,请在 GDB 下运行您的程序,打印 icurrentsize[current] 等值,并使用您的 GDB 会话更新您的问题。

【讨论】:

    【解决方案2】:

    我怀疑size[current] 大于200

    【讨论】:

      猜你喜欢
      • 2021-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-04
      • 2015-03-20
      • 2020-03-04
      • 1970-01-01
      • 2015-06-22
      相关资源
      最近更新 更多