Allocation/Desallocation de mémoire
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:
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
Code:
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 |
testhello.cpp
Code:
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();
} |
Merci.