Je ne reviens pas sur comment passer l'objet en paramètre, la question a été adressée correctement. En revanche, il faut être rigoureux sur la gestion du cycle de vie des objets :
- Si chaque thread doit avoir son objet, alors il ne faut pas stocker this qui est à chaque fois un pointeur vers le même objet. Il faut en créer un nouveau pour chaque thread.
- L'objet est-il toujours en vie lorsque les threads s'exécutent ? Si l'objet est créé avant de lancer les threads et détruit alors que ceux-ci s'exécutent encore, tu vas avoir des ennuis. Le code montré ne permet pas de savoir si c'est le cas ou pas.
Lorsque je vois ça, j'ai l'impression que tu manques de maîtrise sur la notion de pointeur :
Ca c'est fuite de mémoire direct. m_threads[1]->o = this est une copie de pointeur, ça n'affecte pas les objets pointés.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 m_threads[1]->o = new Class; m_threads[1]->o = this;
N'oublie pas de passer un memory checker sur ton exécutable, car on fait vite des erreurs avec ce genre de code.
Partager