2010-11-23 22 views
1

Duplicate possible:
posix timer_create() function causing memory leak on linuxposix problème timer_create() sur linux

J'utilise la fonction posix timer_create() pour la fonctionnalité de minuterie dans mon application. J'utilise l'option SIGEV_THREAD pour le scénario de timeout. Mais le thread créé par le noyau lors de l'exécution lorsque le délai d'expiration arrive à ne pas se terminer. Il n'y a pas de problème avec la fonction de démarrage du thread. À des fins de test, j'en ai fait une fonction factices. Comme ce thread ne sort pas, il provoque une fuite de memroy d'environ 10mb. L'état de détachement du thread créé par défaut est PTHREAD_CREATE_DETACHED. Quelqu'un peut-il me dire quoi faire pour se débarrasser de la fuite de mémoire?

+0

Veuillez arrêter de créer ces publications en double. –

+4

Si vous voulez une meilleure réponse que la dernière fois, publiez du code. – Duck

Répondre

0

Cette bibliothèque libc crée un thread pour gérer les minuteurs pour vous. Ce thread n'est pas détruit après que votre minuteur a été déclenché pour éviter de créer/détruire des threads chaque fois que vous utilisez timer_create(). En d'autres termes, une fois qu'un thread de minuteur a été créé, il s'exécute jusqu'à ce que le programme se termine. Toutefois, le fil de la minuterie lui-même ne provoque aucune fuite de mémoire. La fuite de mémoire est probablement causée par votre code. Postez votre code s'il vous plaît.