|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 12 ![]() |
Bonjour,
J'ai cherché un peu partout, mais n'ai pas trouvé de réponse à la question suivante. Lors de cet appel : Sachant que MaProcedure ne fait pas de delete sur son paramètre, ce code produit-il une fuite mémoire ? Ou bien l'appel à delete est-il implicite à la suite de cet appel ? Sachant que l'on instancie un type de base et non une classe. Cordialement |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : septembre 2010 Messages : 67 ![]() |
Oui, cela génère une fuite mémoire, la variable ne sera pas détruite.
La destruction d'une variable à l'aide de new doit se faire explicitement avec un delete. Le principe de l'allocation dynamique est justement de devoir manager "manuellement" une variable (qu'elle contienne un type de base ou non). Pourquoi faire une telle chose, et ne pas passer par une fonction avec un passage de paramètre par référence ? |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2006 Messages : 12 ![]() |
Je vais donc déclarer une variable "dummy" et passer son adresse à la fonction. C'est moche, mais je n'ai pas le choix car il m'est interdit de modifier ou surcharger MaProcedure.
Merci pour votre réponse. |
|
|
00
|
|
|
#4 | ||
|
Membre éprouvé
![]() Étudiant Inscription : juin 2012 Messages : 263 ![]() |
Citation:
Perso je préfère un pointeur à la place d'une référence, je trouve ça plus lisible de passer un pointeur quand je sais que le paramètre va être modifié. Par contre les références constantes sont pratique pour le passage d'objet. Citation:
Code :
void foo(long& l) { MaProcedure(&l); } |
||
|
|
00
|
|
|
#5 | ||||||||||||
![]() ![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 5 318 ![]() |
Quelques petites corrections...
Citation:
Plus d'excuse maintenant Citation:
C'est peut être un problème de conception de MaProcedure si cela a un sens de pouvoir l'appeler sans avoir besoin de créer un objet. Si c'est pas le cas, c'est un choix volontaire (ou non) du créateur de MaProcedure d'obliger à créer une variable temporaire, plaint toi à lui Il faut écrire : Code :
Citation:
Code :
Citation:
Code :
Vaut mieux écrire : Code :
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5. |
||||||||||||
|
10
|
Copyright © 2000-2013 - www.developpez.com