vincemail
Messages postés79Date d'inscriptionmardi 29 juillet 2003StatutMembreDernière intervention 8 décembre 2006
-
5 mars 2006 à 12:15
vincemail
Messages postés79Date d'inscriptionmardi 29 juillet 2003StatutMembreDernière intervention 8 décembre 2006
-
5 mars 2006 à 13:56
Bonjour, je voudrais savoir comment fonctionne delete sur des objets.. Par exemple j'ai un objet Tableau qui contient un membre *tableau (qui est bien sur un tableau de valeur). J'alloue dynamiquement de la mémoire pour ce tableau dans le constructeur de Tableau et je voudrais savoir si lorsque j'écris : delete tableau1 (où tableau1 est un objet Tableau) est ce que la mémoire allouée pour *tableau est aussi libérée ?
Sinon une deuxième question : est-il nécessaire d'utiliser delete pour un objet dont l'allocation de mémoire est statique ?
Et puis troisième et dernière question : lorsque j'écris : delete tableau1 celà génère une erreur car tableau1 n'est pas un pointeur. Il n'est donc pas possible d'utiliser delete sur un objet ?
ctx_man
Messages postés285Date d'inscriptionmardi 28 décembre 2004StatutMembreDernière intervention20 janvier 20133 5 mars 2006 à 12:43
Salut !
Si ton objet qui aloue de la memoire alloue de la memoire dynamiquement, cet objet DOIS absolument desallouer cette memoire, c'est a ca que sert le destructeur ! Normalement le but de creer un objet c'est aussi de pouvoir encapsuler tes données donc normalement seul ton objet a le droit de delete ces données, donc c'est ton objet qui doit faire "delete[] tableau;" et tu dois t'assurer que ton destructeur delete toute donnees allouer par ton objet. De la meme facon qu'en C on ne free que ce qui a ete "malloc", "calloc" ou "realloc", en C++ on ne delete que ce qui a ete "new", les autres cas de figure c'est le system qui s'en charge.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 5 mars 2006 à 12:23
1) Si ton tableau est alloué statiquement, surtout pas de delete sur
ton tableau. Faut faire un delete sur chaque élément de ton tableau si
il contient des pointeurs initialisés avec new.
2) Faut surtout pas utilisé delete sur un objet statique. Ca n'a aucun intéret, et indéfinie.
3) Tu utilises delete sur un pointeur d'objet initialisé avec new.