new & delete customisé et destructeur qui foire - C++ - Programmation
Marsh Posté le 26-10-2008 à 12:37:22
Joel F a écrit : Deux questions non reliées : |
Il faut surtout que dans ton propre destructeur tu fasse bien tout ce que t'as à faire (si t'as un delete d'un membre après un truc qui peut thrower par exemple), après la norme dit que les destructeurs des classes parentes seront appellés même si ton destructeur throw, donc à l'intérieur de l'objet t'as pas de pb. Par contre :
- pour les utilisateurs externes de l'objet ça peut poser problème pour garantir que le programme sera jamais dans un état bancale.
- si ton destructeur throw pendant la remontée d'une autre exception (dépilage des objets dans la stack), le programme s'arrète immédiatement.
(Note que c'est que des trucs que j'ai appris en lisant, pas vécu, donc c'est pas forcément de l'information de première qualité, dans le doute que fais des destructeurs qui throwent pas mais j'ai jamais eu à faire des programmes vraiment fiables.)
Joel F a écrit : 2/ Surchargé new et delete pour leur faire appelé memalign en douce, ca passe ou faut il restreindre cett surcharge au classique new/delete de placement ? |
Je vois pas ou est le problème, le new de placement n'a rien de particulier.
Par contre, pour supporter le new[], tu passe après la décision du compilo/système qui a calculé la taille totale pour les n éléments, du coup tu peut pas changer l'alignement de chaque élément du tableau
Marsh Posté le 26-10-2008 à 15:30:31
0x90 a écrit : |
En gros, j'ai une classe qui n'appartient à aucune hiérarchie de classe et dont on ne peut hériter qui, lorsqu'elle ets détruite effectue un calcul.
Je voulais savoir si y avait des cas ou les destrcuteurs foirait et donc empecherait mon calcul.
0x90 a écrit : |
oui ca je sais, mais pour new[], je veut juste aligner le premier donc c'est bon
Marsh Posté le 25-10-2008 à 21:57:02
Deux questions non reliées :
1/ Quant un destructeur peut il thrower ou se terminer indument, laissant un objet à moitié détruit.
2/ Surchargé new et delete pour leur faire appelé memalign en douce, ca passe ou faut il restreindre cett surcharge au classique new/delete de placement ?
Voilou