簡體   English   中英

使用線程調試分段錯誤

[英]debugging segmentation fault using threads

調試我的C程序時,出現此錯誤消息

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7ffff77f6700 (LWP 14945)]
__strcpy_sse2_unaligned ()
at ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S:532
532 ../sysdeps/x86_64/multiarch/strcpy-sse2-unaligned.S: Aucun fichier ou dossier de ce type.

我認為發布我的代碼是“無用的”,因為它無法精確顯示錯誤行。

但我知道我認為它來自此功能:

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;
}

(昵稱是一個9個字符的字符串)

您的代碼有點奇怪。 但是,崩潰的原因可能是:

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

請注意, nouveau是您剛剛請求的未初始化內存的塊。 然后,您將訪問nouveau->users->nickname ,它假定nouveau->users是有效的指針。

這是發生的另一件事是重寫u在這里:

u = malloc(sizeof(*u));

我懷疑您的實際意圖是這樣的:

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

這將解決兩個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM