【发布时间】:2013-04-20 18:57:25
【问题描述】:
我有一个 C 项目,我对 C 和 linux 环境还很陌生。
我正在开发具有以下系统信息的 linux 发行版
Linux bt 3.2.6 #1 SMP Fri Feb 17 10:34:20 EST 2012 x86_64 GNU/Linux
用gcc编译后,在上述操作系统上,我得到了等待的结果。
在将我的项目提交给教授之前,我曾想过尝试使用以下系统信息在另一个 linux 发行版上编译和执行程序
Linux feistyFawn 2.6.20-15-generic #2 SMP Sun Apr 15 07:36:31 UTC 2007 i686 GNU/Linux
我在这个下遇到分段错误。 来说明输出控制台。这是图片。
作品
失败
我不知道现在该怎么办。
代码
调用此函数会导致另一个操作系统出现分段错误。
fileInEvenements(listEvents, 'A', time, queueId);
它的作用是将名为 A 的事件归档到队列结构 listEvents 中。
及其定义
void fileInEvenements(eventStructure *listEvents, char eventType, int time_exec, int id_queue)
{
Event *newEvent = malloc(sizeof(*newEvent));
if (newEvent == NULL || listEvents == NULL){
exit(EXIT_FAILURE);
}
newEvent->type = eventType;
newEvent->execution_time = time_exec;
newEvent->id = id_queue;
if (listEvents->firstEvent != NULL)
{
// the list contains at least one event, go to the end of list
Event *evCurrent = listEvents->firstEvent;
while (evCurrent->next != NULL)
{
evCurrent = evCurrent->next;
}
evCurrent->next = newEvent;
}
else // the list contains no event, new event becomes first event
{
listEvents->firstEvent = newEvent;
}
}
【问题讨论】:
-
请显示导致此错误的代码。
-
您的代码在两台计算机上(可能)都是错误的。当它没有在其中一个上崩溃时,你就很不走运了。
-
使用调试标志编译并使用 gdb 分析
标签: c segmentation-fault portability