Bonjour,
Je suis confronté à un petit problème : j'utilise la librairie pthread pour gérer le multithreading (je n'ai pas accès à std::thread non supporté par mon compilateur) et je code en C++. Le prototype de la fonction callback qui fera le travail du thread est la suivante : void* callback(void* arg); et donc travaille sur des pointeurs génériques (void*).
Le problème est que faire un delete sur un void* provoque un comportement indéfini d'après la documentation.
Comment faire pour supprimer la mémoire alloué au paramètre "arg" si à un moment donné j'ai perdu la vraie nature de la classe que j'ai passé en paramètre ? Est ce que faire un free appelerait le destructeur de la classe ?
Exemple : Soit une classe Dummy.
Merci et bonne journée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Dummy* d = new Dummy(); pthread_t thread; pthread_create(&thread, callback, NULL, d); // et plus loin dans le programme dans une autre fonction je dois supprimer la mémoire allouée par "d" mais j'ai perdu le type réel du pointeur à savoir pointeur sur classe Dummy. Je ne peux donc pas caster et faire un delete après....
Partager