Um die Effizienz von std::make_shared im Vergleich zu einem standardmäßigen shared_ptr zu verstehen Lassen Sie uns ihre Bauprozesse Schritt für Schritt untersuchen Schritt.
Verwendung des standardmäßigen shared_ptr-Konstruktors:
std::shared_ptr<Object> p2(new Object("foo"));
Verwendung von std::make_shared:
std::shared_ptr<Object> p1 = std::make_shared<Object>("foo");
Im Standard Beim Shared_ptr-Konstruktor-Ansatz wird keine Bereinigung durchgeführt, wenn während der Konstruktion von Object eine Ausnahme ausgelöst wird, sodass Speicher ungenutzt bleibt. Allerdings garantiert std::make_shared, dass das erstellte Objekt und der Kontrollblock Teil einer einzelnen Zuordnung sind und bereinigt werden, wenn eine Ausnahme ausgelöst wird.
Das obige ist der detaillierte Inhalt von„make_shared' vs. „shared_ptr': Warum ist One effizienter und ausnahmesicherer?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!