Y at-il des inconvénients à utiliser make_shared<T>()
au lieu d'utiliser shared_ptr<T>(new T)
.Y at-il des inconvénients avec l'utilisation de make_shared pour créer un shared_ptr?
Boost documentation États
Il y a eu des demandes répétées de utilisateurs pour une fonction d'usine qui crée un objet d'un type donné et renvoie un shared_ptr à elle. En plus commodité et de style, une telle fonction est également exception sûre et beaucoup plus rapidement, car il peut utiliser une allocation unique à la fois l'objet et son bloc de contrôle correspondant , ce qui élimine une partie importante de la construction de shared_ptr frais généraux. Cela élimine l'une des plaintes d'efficacité majeure sur shared_ptr.
On peut se demander quelles sont les autres principales plaintes concernant l'efficacité de shared_ptr? –
La sécurité d'exception est un atout assez fort de «std :: make_shared». Essayez de l'utiliser autant que possible. –
@ViktorSehr Mutex verrouille sur le compteur de référence quand un 'shared_ptr' est copié principalement :) – Drax