Comment "proprement" passer un objet dynamique à une fonction qui doit le détruire
Bonjour,
Je programmais depuis longtemps en Delphi et je suis contraint de passer à C++.
Je cherche donc à "retrouver" comment faire en C++ des choses que je savais faire avant :(
Je voudrais transmettre un objet créé dans le thread principal à un thread chargé de le traiter puis de le libérer.
Le thread principal peut en effet recevoir d'autres images à traiter et doit pouvoir les mettre en file d'attente sans se préoccuper du thread de traitement...
Dans ma routine de test (très basique) je constate que le "pointeur" vers l'objet libéré n'est pas remis à nullptr et je crains donc que l'objet dynamique ne soit libéré deux fois !!!!
J'ai essayé sans succès plein de combinaisons & et *...
L'appelant
Code:
1 2 3 4 5 6 7
|
QImage *SavPict = new QImage;
// SavPict est initialisé plus loin dans le code
processImage(SavPict)
if (SavPict != nullptr) { qDebug() << "SavPict non null" } |
L'appellé
Code:
1 2 3 4 5 6
| void MyPgm::processImage(QImage *&clip) {
// traitement de l'image
delete &clip;
} |
Avant d'aller plus loin, je voudrais m'assurer que je ne vais pas rencontrer des fuites mémoires et des erreurs aléatoires.
Merci d'avance