【问题标题】:C Segmentation Fault problemC Segmentation Fault 问题
【发布时间】:2011-09-10 01:40:18
【问题描述】:

首先我要说过去 5 年左右我一直在使用 Java 和 C# 进行编程,所以我的 C 技能非常生疏。

我遇到了分段错误,我不太清楚为什么。 使用 gdb,我能够找到导致故障的线路,但我不确定问题是什么。请帮忙:)

我从一个文件中读入一个整数值,它是秒数。假设我读了将值保存到 char token[100]...

time_type sim_time;
char *s;
unsigned long time_sim;
s = token;
time_sim = strtoul(s,0,10);
int_to_time(time_sim, &sim_time);

Add_Event(eventId, agentId, &sim_time);

time_type 是一个结构体,它有一堆字段。 这是 int_to_time 的声明:

void int_to_time(unsigned long, struct time_type*);

现在是 Add_Event 的声明:

void  Add_Event(int, int, struct time_type*);

对 int_to_time 的调用正常,但对 Add_Event 的下一次调用给出了 sim_time 的分段错误。我究竟做错了什么?

提前致谢。我尽量不包含不必要的代码,但如果我没有包含足够的代码,请告诉我。

【问题讨论】:

  • 如果time_type 是一个结构,那么time_sim = strtoul(s,0,10); 怎么样?
  • 访问 time_type 字段时是否 Add_Event 段错误?
  • @Seth time_simsim_time 是不同的变量。
  • 说真的。是谁在发布后的几分钟内不断对所有这些低质量的问题进行投票?这真的开始让我紧张了。
  • @Tomalak,问题实际上并没有那么简单,因为代码没有明显的错误。至少,我什么都看不见。要么我是个白痴,要么这里有一些更微妙的东西在起作用。 John A,Add_Event 的代码可能会有所帮助。

标签: c


【解决方案1】:

我不知道您的 time_typeint_to_time 来自哪个库,但我会查看它的文档,看看您是否需要在将 time_type 用作目标之前以某种方式初始化它int_to_time 或类似的东西。代码表面上并没有明显错误,但如果不查看更多代码就很难判断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-15
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多