Salut je lis un cour sur la programmation système en C, Depuis hier je traine sur un exercice sur les thread que voici:
Écrire un programme qui crée un thread qui alloue un tableau d’entiers,
initialise les éléments par des entiers aléatoires entre 0 et 99, et retourne le tableau d’entiers.
Le problème est que je n'arrive pas lire la variable renvoyer par le thread je tombe sur cette erreur dans la console au moment de l'affichage des valeur du tableau via printf :
$ zsh: segmentation fault
Voice le code que j'ai écris:
Je pense que c'est lier à la manière dont j'utilise les pointeur vu le message d'erreur (zsh: segmentation fault), mais je n'arrive pas à corriger l'erreur j'ai même essayer avec une simple variable au lieu d'un tableau mais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <pthread.h> void *maFontion(void*arg) { int tableau[10]={0}; printf("On est dans le thread, on initialise le tableau par des valeur aléatoire\n"); for (int i = 0; i < 10; i++) { tableau[i]= rand()%99; } pthread_exit((void*)tableau); } int main(void) { pthread_t monThread; int *tableau =NULL; if(pthread_create(&monThread,NULL,maFontion,NULL) != 0) { perror("pthread_create"); exit(-1); } pthread_join(monThread,(void*)&tableau); printf("On est dans le main on lit la valeur de tableau\n"); for (int i = 0; i < 10; i++) { printf("Valeur numero %d => %d\n", i , tableau[i]); } return 0; }.
merci d'avance.
Partager