Junior — Middle
111
Lze vysvětlit účel a funkci make_shared v C++ a jaké jsou její výhody ve srovnání s použitím new pro vytváření chytrých ukazatelů?
Odpověď od AI
sobes.tech AI
Функция make_shared в C++ используется для создания объекта и умного указателя std::shared_ptr на этот объект одновременно. Она выделяет память один раз для объекта и для управляющего блока, что повышает эффективность.
Преимущества make_shared по сравнению с использованием new и конструктора shared_ptr напрямую:
- Оптимизация выделения памяти:
make_sharedвыделяет одну область памяти для объекта и управляющего блока, тогда как при использованииnewиshared_ptrвыделяется две области. - Безопасность:
make_sharedисключает возможность утечки памяти, если конструкторshared_ptrвыбрасывает исключение послеnew. - Удобство: Код становится короче и чище.
Пример:
#include <memory>
std::shared_ptr<int> p1 = std::make_shared<int>(42); // Создает объект int со значением 42
// Аналогично, но менее эффективно:
std::shared_ptr<int> p2(new int(42));
Рекомендуется использовать make_shared в большинстве случаев для создания shared_ptr.