Bonjour,
Je ne suis pas familier des threads et j'aimerais bien faire les choses.
Tout d'abord un bout de code :
Ma question est de savoir si le free(data) doit être fait à la fin de chaque tour de boucle, ou dans la fonction sendEvent.
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 for (i = 0 ; i < MAX ; i++){ char * data = NULL; data = malloc(1024); if (data == NULL){ printf("Impossible d'allouer la mémoire"); exit(1); } memset(data ,0,1024); /* On remplie les données */ ..... /* On traite les données */ int res = pthread_create(&threads[i], NULL, sendEvent, (void *) data); if (res != 0){ printf("Impossible de créer le thread : %s.",strerror(errno)); free(data); exit(1); } free(data); }
Mon intuition me dirait à chaque tour de boucle, mais le thread ne risque-t-il pas de ne plus avoir les données car déréférencées par le prog principal ?
Note : le prog est volontairement simplistepour ne pas compliquer le post et ce concentrer sur le free.
Merci d'avance pour vos lumières
Partager