У меня возникла ошибка «Ошибка сегментации 11» со следующим кодом: Я создал поток, который дает в параметрах struct.Ошибка сегментации 11 программа потока
Я думаю, что проблема заключается в объявлении функции *MARIT
.
Извините за мой плохой английский Я французский.
struct parametres {
double *T;
int N; //taille
};
void *MARIT(struct parametres parametres)
{
int *somme =0;
float *moyenne = 0;
int i;
for(i = 0; i < parametres.N; i++)
*somme = *somme + parametres.T[i];
printf("somme : %d",somme);
*moyenne = (*somme/(parametres.N+0.0));
pthread_exit(moyenne);
}`
int main(int argc, char* argv[])
{
float temps;
clock_t t1, t2;
t1 = clock();
struct parametres params;
printf("Salut à toi !\n");
printf("Donnez la taille du tableau :");
scanf("%d", ¶ms.N);
params.T = malloc(params.N * sizeof(double));
int i = 0;
int nombre_aleatoire = 0;
for(i=0; i<params.N; i++){
nombre_aleatoire = (rand() % 1000) + 1;
params.T[i]=nombre_aleatoire;
}
pthread_t arith,quadrat,cubi;
if(pthread_create(&arith, NULL, MARIT, (void*)¶ms) != 0)
{
perror("pthread_create");
exit(1);
}
double *result=0;
pthread_join(arith, (void**)&result);
printf("le resultat du thread : %f",result);
return 0;
}
Я не знаю, в чем проблема.
'недействительными * MARIT (структура параметров параметры) {' '-> недействительным * Марит (недействительными * данные) {структура параметров параметры = * данные; '. Также удалите все звездочки ('*') перед 'somme' и' moyenne'. –
Предупреждение: несовместимые типы указателей, передающих 'void * (struct paramètres)' to paramètre типа 'void * (*) (void *)' В строке "pthread_create" – FlorianSL
Прохладный Парень, есть ошибка: инициализация 'struct parameter' выражение несовместимого типа 'void' Спасибо – FlorianSL