Ça n'a absolument aucun sens ce que tu dis. Dans tous les cas la mémoire que tu as allouée doit être désallouée. Les smart pointeurs permettent simplement de s'affranchir de faire des memory leak parce qu'on a oublié de le faire à un fil d'exécution du code. D'ailleurs un std::unique_ptr compilé avec les optimisations au max génère le même code assembleur.
Les smarts pointers permettent surtout d'éviter ce genre de problèmes avant qu'ils existent.
Foo*instance=get_my_instance_driver();// Okay...if(something_has_failed){log("it failed");deleteinstance;returnfalse;}do_something_that_may_throw_an_exception();// Oups, si cette fonction a levé une exception j'ai un bon gros leak des familles.returntrue;
[^] # Re: les anciennes choses..
Posté par David Demelier (site web personnel) . En réponse au journal Ces langages avec lesquels il faut tout réécrire. Évalué à 3. Dernière modification le 29 septembre 2022 à 15:19.
Ça n'a absolument aucun sens ce que tu dis. Dans tous les cas la mémoire que tu as allouée doit être désallouée. Les smart pointeurs permettent simplement de s'affranchir de faire des memory leak parce qu'on a oublié de le faire à un fil d'exécution du code. D'ailleurs un std::unique_ptr compilé avec les optimisations au max génère le même code assembleur.
Les smarts pointers permettent surtout d'éviter ce genre de problèmes avant qu'ils existent.
AI is a mental disorder