Czy są jakieś wady przy użyciu make_shared<T>()
zamiast używania shared_ptr<T>(new T)
.Czy są jakieś minusy z używaniem make_shared do tworzenia shared_ptr
Boost documentation stany
Nie zostały powtórzone żądania od użytkowników dla funkcji fabrycznego że tworzy obiekt danego typu i Zwraca shared_ptr do niego. Poza wygody i stylu, taka funkcja jest również bezpieczny wyjątek i znacznie szybciej, ponieważ można go używać pojedynczy alokacji zarówno dla obiektu i jej odpowiednia kontrola bloku, eliminując znaczną część shared_ptr za budowlanego napowietrznych. Eliminuje to jedną z poważnych skarg dotyczących wydajności o wartości shared_ptr.
Można się zastanawiać, jakie są inne poważne skargi dotyczące wydajności dotyczące shared_ptr? –
Bezpieczeństwo wyjątków jest dość mocnym * zasobem * słowa 'std :: make_shared'. Staraj się go używać, gdy tylko jest to możliwe. –
@ViktorSehr Mutex blokuje licznik odwołań, gdy 'shared_ptr' jest kopiowany głównie :) – Drax