2015-03-25 2 views
-4

Certaines fonctions prennent le pointeur sur struct comme paramètres, pthread_create par exemple, le quatrième paramètre est le pointeur sur les données que vous voulez utiliser, mais que faire si je supprime la structure avant la fonction thread les données? Devrais-je conserver les données non supprimées jusqu'à ce que la fonction de fil l'utilise ou les supprime sans aucune considération?Passer un pointeur sur struct comme paramètre

Répondre

0

Vous devrez conserver la structure "active" pendant la durée de son utilisation. Si vous supprimez la structure avant qu'elle ne soit accédée, il s'agit d'un comportement non défini lors de l'accès à la structure, car il peut y avoir des données totalement différentes sur cette adresse mémoire.

Pour pthread_create(), vous pouvez voir un exemple ici: http://man7.org/linux/man-pages/man3/pthread_create.3.html

Dans cet exemple, vous pouvez voir qu'ils allouent TINFO avant d'appeler create_thread et le libérer après avoir rejoint les fils.