Назад к вопросам
Junior — Middle
84
Какова основная цель использования функции make_shared и в чём её преимущества?
Ответ от нейросети
sobes.tech AI
Функция make_shared в C++ используется для создания объекта, управляемого умным указателем std::shared_ptr. Основная её цель — эффективное и безопасное выделение памяти для объекта и управляющего блока счётчика ссылок в одном аллокации, что снижает накладные расходы и повышает производительность.
Преимущества make_shared:
- Оптимизация выделения памяти: выделяется одна область памяти под объект и счётчик ссылок, а не две, как при использовании
shared_ptrсnew. - Безопасность: исключается риск утечки памяти, даже если конструктор объекта выбросит исключение.
- Удобство: синтаксис проще и чище.
Пример использования:
#include <memory>
struct MyClass {
int x;
MyClass(int val) : x(val) {}
};
int main() {
auto ptr = std::make_shared<MyClass>(10); // Создаёт shared_ptr на объект MyClass с x=10
}