[C++] Libération de mémoire de void*
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.
Code:
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.... |
Merci et bonne journée