Junior — Middle
122
C++-da make_shared funksiyasının məqsədini və iş prinsipini izah edə bilərsiniz və onun smart pointer-lərin yaradılmasında new istifadə etməyə nisbətən üstünlükləri nədir?
AI-dan cavab
sobes.tech Süni İntellekt
Функция 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.