• [^] # Re: works for me

    Posté par (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:

    void f(smart, smart);
    ...
    f(smart(alloc()), smart(alloc()));
    

    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.