Pour comprendre l'efficacité de std::make_shared par rapport à un shared_ptr standard , examinons étape par étape leurs processus de construction étape.
À l'aide du constructeur shared_ptr standard :
std::shared_ptr<Object> p2(new Object("foo"));
Utilisation de std::make_shared:
std::shared_ptr<Object> p1 = std::make_shared<Object>("foo");
Dans le Selon l'approche constructeur standard shared_ptr, si une exception est levée lors de la construction de l'objet, aucun nettoyage n'est effectué, laissant de la mémoire en suspens. Cependant, std::make_shared garantit que l'objet construit et le bloc de contrôle font partie d'une seule allocation et seront nettoyés si une exception est levée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!