Czy std::make_unique
ma jakieś korzyści związane z wydajnością std::make_shared
?
W porównaniu z tworzeniem ręcznym std::unique_ptr
:
std::make_unique<int>(1); // vs
std::unique_ptr<int>(new int(1));
make_shared
może przydzielić zarówno miejsce na obiekt, jak i miejsce na blok sterujący razem w jednej alokacji. Kosztem tego jest to, że obiekt nie może zostać zwolniony oddzielnie od bloku sterującego, więc jeśli używasz weak_ptr
dużo, możesz skończyć z użyciem większej ilości pamięci.
make_shared
ma jakąkolwiek skuteczność w porównaniu z samym pisaniem kodu długiej ręki?