Bonjour,

Je ne suis pas familier des threads et j'aimerais bien faire les choses.

Tout d'abord un bout de code :
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);
}
Ma question est de savoir si le free(data) doit être fait à la fin de chaque tour de boucle, ou dans la fonction sendEvent.
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