Junior — Middle
108
C++-да make_shared функциясының мақсаты мен жұмысын түсіндіріп беріңіз және ол smart pointers-ті жасау үшін new қолданумен салыстырғанда қандай артықшылықтары бар?
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.