URL: https://linuxfr.org/forums/programmation-c--2/posts/probleme-sur-la-liberation-memoire-du-thread Title: Probleme sur la liberation memoire du thread Authors: golgot Date: 2005年10月15日T14:11:52+02:00 Tags: Score: 0 bonjour, Voila j'ai programme un petit serveur en C qui utilise les pthread. Les thread sont creer a chaque connexion d'un client. je met les pthread en detached pour qu'à la fin du thread, celui ci libere la memoire. Pour tant je vois que mon processus serveur prend tjs de la mémoire. Bref voici un bout de code qui sera plus parlant pthread_attr_setdetachstate (&thread_attr,PTHREAD_CREATE_DETACHED); while(1) { . . if((sock_client=accept(sockfd,(struct sockaddr*)&sockadr_client,&client_length))<1) { . . } else { . . pthread_create(&client_thread_create, &thread_attr, Thread_client, (void *)&sock_client); } } ma focntion de thread : void *Thread_client (void *new_sock) { int num_s = *(int*)new_sock; pthread_t id_thread; char toto[5000000]; memset((char *) &toto,55,5000000); pthread_mutex_lock(&mutex); // debut de la section critique close(num_s); nb_clients--; pthread_mutex_unlock(&mutex); // fin de la section critique pthread_exit(NULL); } j'ai mis un tableau de 5000000 pour que l'appli prenne 5 MO de memoire ce qui fait 1% de ma memoire. A chaque client qui se connect j'ai 1% de ma memoire qui est prise est qui n'est jamais libéré :(( Si qelqu'un pouvais me dire pourquoi ma memoire ne se libere pas alors que j'ai creer les thread en detached :(

AltStyle によって変換されたページ (->オリジナル) /