Ha std::make_unique
dei vantaggi in termini di efficienza come std::make_shared
?
Rispetto alla costruzione manuale std::unique_ptr
:
std::make_unique<int>(1); // vs
std::unique_ptr<int>(new int(1));
make_shared
può allocare sia lo spazio per l'oggetto che lo spazio per il blocco di controllo insieme in una singola allocazione. Il costo di ciò è che l'oggetto non può essere deallocato separatamente dal blocco di controllo, quindi se usi weak_ptr
molto puoi finire per usare più memoria.
make_shared
qualche efficacia oltre a scrivere il codice a mano lunga?