Question a propos de 'delete' en C++...

akboy7015 Messages postés 8 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 8 septembre 2004 - 21 août 2004 à 13:24
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 - 21 août 2004 à 17:16
Serai t'il possible de detecter si un pointeur vers un objet quelconque instancié avec 'new' et déjà détruit avec 'delete' ou pas?

je m'explique:

pMonObjet = new Objet;
delete pMonObjet;
delete pMonObjet; // Exception levée car erreur d'accés mémoire

Je voudrais reussir, avant de faire se second delete si il est déjà détruit ou non. Bien sur, je sais que je pourrait mettre le pointeur a null apres le premier delete, mais j'aimerai savoir :question)

De plus, je voudrai aussi savoir si c possible sans les exceptions comme ceci:

try
{
delete pMonObjet;
}
catch (...) {}

5 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 août 2004 à 13:30
Les exceptions inserent un grosse couche de code.
Mets pointeur a NULL, bonne habitude a prendre.

ciao...
BruNews, Admin CS, MVP Visual C++
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
21 août 2004 à 13:46
Les exceptions ? beurk!
Moins tu t'en serviras, mieux se sera!
Puis comme BruNews te l'a fait remarquer, les exceptions gonfle le code.
Essaye tant que possible de rester dans la simplicité.

Shell
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
21 août 2004 à 13:47
BruNews> D'ailleurs toi qui est dans le domaine, est ce que dans la programmation professionnelle, les exceptions sont souvent utilisées ?

Shell
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
21 août 2004 à 14:00
Depend du code et ce que ça gere, tu ne peux pas generaliser.
Dans le cas du delete, inutile.
Si tu geres des periphs dont les pilotes balancent des exceptions alors par force il faut traiter.
Des libs COM comme ADO balancent aussi des exceptions.
Pour resumer, on s'en sert quand on ne peut pas faire autrement.

ciao...
BruNews, Admin CS, MVP Visual C++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
21 août 2004 à 17:16
utilise un pointeur inteligent

std::auto_ptr

mais je suis d'une meme avis que BruNews, il ne faut pas se creer ce besoin de sécurité alors que mettre le pointeur à NULL suffit

personnelement je suis pas pour l'utilisation de smart pointer
0
Rejoignez-nous