new & delete customisé et destructeur qui foire

new & delete customisé et destructeur qui foire - C++ - Programmation

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

Reply

Marsh Posté le 25-10-2008 à 21:57:02   

Reply

Marsh Posté le 26-10-2008 à 12:37:22    

Joel F a écrit :

Deux questions non reliées :
1/ Quant un destructeur peut il thrower ou se terminer indument, laissant un objet à moitié détruit.


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 :/


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 26-10-2008 à 15:30:31    

0x90 a écrit :


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.)


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 :


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 :/


oui ca je sais, mais pour new[], je veut juste aligner le premier donc c'est bon ;)

Reply

Marsh Posté le 26-10-2008 à 15:39:34    

tu veux pas faire un vector avec un allocator ?

Reply

Marsh Posté le 26-10-2008 à 18:47:59    

Pour une classe POD, ca marche guère ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed