首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言 pthread 執行緒傳回指標導致段錯誤:pthread_join 參數傳遞錯誤分析

     編輯:程式設計綜合問答

執行緒函數 area 回傳 double*,主執行緒呼叫 pthread_join(tid, (void**)&a) 時,第二參數需為 void**,用來接收執行緒回傳的指標值。錯誤程式碼中 double** a; 未初始化指向有效記憶體,導致 pthread_join 寫入無效位址引發段錯誤。正確做法:

double *result;
pthread_join(tid, (void**)&result);
printf("Area: %f\n", *result);
free(result);

前三個 #if 0 區塊碰巧因記憶體佈局未立即崩潰,但邏輯皆有誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved