Ho letto un manuale dicendo che (vedi http://en.cppreference.com/w/cpp/memory/shared_ptr/make_shared):Perché c'è una perdita di memoria durante l'utilizzo di shared_ptr come parametro di funzione?
Inoltre,
f(shared_ptr<int>(new int(42)), g())
può portare alla perdita di memoria se g genera un'eccezione. Questo problema non esiste se make_shared è utilizzato.
Perché questo porta alla perdita di memoria?
+1. Sì, questo è il motivo, stavo per scriverlo, ma ho parlato prima del costruttore e mi sono incasinato. – Nawaz