Si les fonctions d'allocation peuvent lever une exception (typiquement new, voire même un constructeur, peut échouer), vu que le C++ n'apporte aucune garantie ici quant à l'ordre d'exécution des opérations (le compilo est libre de réordonner pour maximiser les perf), on peut se retrouver avec la première allocation réussie, mais non récupérée par sa capsule RAII (smart), et la seconde allocation échouée. Résultat des courses, une fuite de ressource.
PS: je m'étais planté pour COTS, c'est commercial off-the-shelf. Composant, c'est dans la VF.
[^] # Re: works for me
Posté par lmg HS (site web personnel) . En réponse à la dépêche Naissance d'un géant : Java. Évalué à 1.
Le problème apparait dans ce cas d'utilisation:
Si les fonctions d'allocation peuvent lever une exception (typiquement new, voire même un constructeur, peut échouer), vu que le C++ n'apporte aucune garantie ici quant à l'ordre d'exécution des opérations (le compilo est libre de réordonner pour maximiser les perf), on peut se retrouver avec la première allocation réussie, mais non récupérée par sa capsule RAII (smart), et la seconde allocation échouée. Résultat des courses, une fuite de ressource.
PS: je m'étais planté pour COTS, c'est commercial off-the-shelf. Composant, c'est dans la VF.