Вопросы к Поиску с Алисой
Необходимость в функции std::make_shared в C++ появилась для более безопасного и эффективного создания общих указателей. www.geeksforgeeks.org
При создании общего указателя на уже существующий объект выделяется три разных участка памяти: одно для блока управления общим указателем, одно для объекта и одно для самого общего указателя. www.geeksforgeeks.org С помощью std::make_shared происходит только два распределения памяти: одно для общего указателя, а другое — как для блока управления, так и для объекта. www.geeksforgeeks.org Это обеспечивает лучшую эффективность, чем обычный общий указатель. www.geeksforgeeks.org
Кроме того, конструирование std::sharedptr из свежесозданного сырого указателя может приводить к утечке памяти, если компилятор перемешает вызовы в произвольном порядке. habr.com Чтобы избежать этого, была придумана функция std::makeshared. habr.com