OVH Cloud OVH Cloud

le piege

2 réponses
Avatar
Don
Bonjour,

D'après ce qu'on m'a dit, les codes suivants présentent certains risques
lors de son utilisation :


class toto {
public :
toto(){
_titi = new unsigned char[1000];
}
~toto(){
delete [] _titi;
}

private :
unsigned char *_titi;
}

où sont les risques?

Cdt,
Don

2 réponses

Avatar
Jean-Marc Bourguet
Don writes:

Bonjour,

D'après ce qu'on m'a dit, les codes suivants présentent certains risques
lors de son utilisation :


class toto {
public :
toto(){
_titi = new unsigned char[1000];
}
~toto(){
delete [] _titi;
}

private :
unsigned char *_titi;
}

où sont les risques?


Disponibilite du constructeur de copie et de l'affectation generee par
le compilateur alors qu'ils ne font pas ce qu'il faut. Je suppose que
la classe n'est pas concue pour etre copie d'une maniere ou d'une
autre, mais dans ce cas, il vaut mieux desactiver la possibilite de
faire cette operation en declarant un constructeur de copie et un
operateur d'affectation prives et en ne les implementant pas.

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
adebaene
Don wrote:
Bonjour,

D'après ce qu'on m'a dit, les codes suivants présentent certains risq ues
lors de son utilisation :


class toto {
public :
toto(){
_titi = new unsigned char[1000];
}
~toto(){
delete [] _titi;
}

private :
unsigned char *_titi;
}

où sont les risques?


A ton avis que se passe-t-il si tu fais çà (NB : plusieurs points
sont à noter!) :

int main()
{
toto t1;
{
toto t2;
t1=t2;
}
return 0;
}


???

Arnaud