使用线程调试分段错误

时间:2015-12-17 00:31:20

标签: c multithreading segmentation-fault

调试我的c程序时,我收到此错误消息

void add_user(tlistU *lu, user * u,tuser *new)
{

      tuser *nouveau = malloc(sizeof(tuser));

      u =malloc(sizeof(*u));        
      if (lu == NULL || nouveau == NULL)
      {
        exit(EXIT_FAILURE);
      }
   strcpy(nouveau->users->nickname,u->nickname);
   nouveau->next=lu->first;
   lu->first=nouveau;
}

我认为发布我的代码是“无用的”,因为它不会精确错误行。

但我知道我认为它来自这个功能:

{{1}}

(昵称是9个字符串)

1 个答案:

答案 0 :(得分:1)

你的代码有点奇怪。然而,崩溃的原因可能是这样:

strcpy(nouveau->users->nickname,u->nickname);

请注意,nouveau是您刚刚请求的未初始化内存块。然后,您正在访问nouveau->users->nickname,它假定nouveau->users是有效指针。

发生的另一件事是在此覆盖u

u = malloc(sizeof(*u));

我怀疑你实际的意图是这样的:

nouveau->users = malloc(sizeof(*u));

这将解决这两个问题。