Bonjour,
voilà je m'entraine à faire des allocations dynamiques de tableaux, mais j'ai un doute quant à la qualité de mes désallocations, est-ce que quelqu'un pourrait me dire si les désallocations de mémoire dans le code ci-dessous sont correctes (je me pose la question, car quand j'appelle delete [] tab2, il appelle le destructeur de l'objet, et j'ai dont l'impression qui détruire une adresse déjà détruite et je n'arrive pas à comprendre pourquoi) :
Hello.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 #include "Hello.hpp" #include <iostream> using namespace std; Hello::Hello(char name[]) { cout<<"Construction d'un objet name a l'adresse : "<<this<<endl; this->name = new char; strcpy(this->name,name); } Hello::~Hello() { cout<<"Destruction d'un objet name a l'adresse : "<<this<<endl; delete name; } void Hello::affiche() { cout<<"Hello "<<name<<endl; }
Hello.hpp
testhello.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #ifndef Hello_HPP #define Hello_HPP class Hello{ public: Hello(char[] = "Defaut"); ~Hello(); void affiche(); private: char *name; }; #endif
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 #include "Hello.hpp" #include <conio.h> Hello *testTab(int nbObjets) { Hello *tab = new Hello[nbObjets]; return tab; } int main() { int nbObjets = 3; Hello *tab2 = testTab(nbObjets); for(int i=0;i<nbObjets;i++) { tab2[i].affiche(); } Hello hello("Toto"); hello.affiche(); hello.new_name("Titi"); hello.affiche(); hello.~Hello(); for(int j=0;j<nbObjets;j++) { tab2[j].~Hello(); } delete [] tab2; getch(); }
Partager