Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : delete et destructeurs [ Archives / Au secours ] (anne-lise)

vendredi 30 septembre 2005 à 11:22:26 | delete et destructeurs

anne-lise

Bonjour,

voila j'ai un probleme que je ne peux resoudre depuis un moment deja. J'ai une fonction de ce type :
float* function(float* input1, MaClasse input2)
sachant que input1 a ete construit par new float[N] et input2 par MaClasse(). A aucun moment dans le constructeur de MaClasse ni dans les traitements qui suivent on ne fait appel a input1. Ces deux arguments sont dissocies.

Voila mon probleme, lorsque au sein de cette fonction j'appelle delete[] input1, ca appelle le destructeur de input2, hors, je ne veux pas input2 soit detruit. J'ai fait des tests, si je n'appelle pas delete[] input1, le destructeur de MaClasse n'est pas appelle...

Or, dans cette fonction, je me traite les valeurs de input2 et de input1 mais a aucun moment je ne couple les pointeurs par exemple...

Est ce que quelqu'un sait quel pourrait etre le probleme ? Quelqu'un a une idee ?

J'ai bien pense a mettre le delete en dehors de la fonction mais j'utilise cette fonction au sein d'une boucle et je l'appelle par res=function(res, input2) donc j'ai besoin de desalloue la memoire de res avant de lui en realloue une autre.

Je ne joins pas le code car il est tres long.

Merci d'avance !

Anne-Lise


vendredi 30 septembre 2005 à 15:04:15 | Re : delete et destructeurs

cosmobob

salut,
que tu appelles ou non delete[] sur input1, ton objet input2 sera détruit à la sortie de ta fonction. Quand tu passes une instance de classe par valeur, une copie locale a la fonction est effectuée, et est ensuite détruite quand ta fonction return.

Si tu veux eviter ca, tu dois passer input2 par reference.
Ex:
float* input1 = new float[10];
MaClasse input2;

function( input1, input2 );

avec function de prototype: float* function( float* input1, MaClasse& input2);
a+


vendredi 30 septembre 2005 à 15:08:21 | Re : delete et destructeurs

anne-lise

Oui merci beaucoup ! J'allais justement ecrire que j'avais trouve le probleme !
:-)
Anne-Lise




Cette discussion est classé dans : fonction, appelle, delete, input1, input2


Répondre à ce message

Sujets en rapport avec ce message

net use * /delete EN C++ [ par LeBobo ] Salut. J'ai un petit programme qui utilise la fonction : system(''net use * /delete'') ; Le problème est que mon programme à une interface graphique w APPELLE D'UNE FONCTION DONT LE NOM EST CONTENU DANS UN CHAR [ par vaughan69 ] Salut, je suis en train de développer une librairie graphique qui gere les bouttons. La strucutre du bouton contient un champs char *fonction; Ce cham Fonction dans une structure ? [ par mayti ] Bonjour, voilà j'esseye d'utiliser une fonction dans une structure pour par exemple effacer un fichier: struct FICHIER {     char *path;     sta c++ et delete [ par anne-lise ] Bonjour !voila, j'ai un probleme lorsque je veux faire des delete sur des tableauz.J'ai une fonction du type :float* function(param, int n){   float* Fonction pour remplacer [ par Hyldrios ] Bonjour, je debute le c++ et je voudrais savoir si il existe une fonction pour remplacer un charactère par un autre (en l'occurence un espace par _ ). Fonction En Paramètre [ par Joky ] Hep Hello les gens :) J'ai une question qui me tarrode l'esprit voyez vous Exemple explicite LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM ); Fonction dans DLL [ par guitoulefoux ] Bonjour,J'ai une petite question sur les DLL.J'ai fais une DLL avec un fonction "StartProcess".J'arrive bien à appeler la fonction "StartProcess" d'un convertir pointeur int* en reference int& ??? je fais quoi ? [ par equimose ] j'ai une fonction qui prend comme parametre une CMyLigne & ABet j'ai besoin d'envoyer a cette fonction un pointeur sur une CMyLigne * pLigne !c'est po equivalence inp createfile... [ par vladisback ] bonjour je suis sous xp, je ne sais pas concrétement se que font les inp et outp mias j'aurais voulu recompiler un prog qui en contient sous xp. quel bound checker & warning au delete [ par magic_Nono ] bj j'aurai souhaiter savoir si qqn utilise Bound Checker (avec Visual C++) et saurai expliquer les Bad Pointer: 0x3B5BF20 passed to global_operator_


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,515 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.