Есть ли любые оборотные стороны с использованием make_shared
вместо использования shared_ptr
.
Состояния документации повышения
Там были повторены запросы от пользователей для функции фабрики, которая создает объект данного типа и возвращает shared_ptr ему. Помимо удобства и стиля, такая функция является также исключением, безопасным и значительно быстрее, потому что это может использовать единственное выделение и для объекта и для его соответствующего блока управления, устраняя значительную часть конструкции shared_ptr наверху. Это устраняет одну из главных жалоб на эффективность на shared_ptr.
Указатели и выделение памяти
... Я тоже парень C #, и я все еще пытаюсь обернуть голову о правильных практиках памяти в C/C + +.
-121--1469293-Если вам не нужен криптографически защищенный генератор псевдослучайных чисел, я бы пошел за мерсенновским твистером . Исходный код для C # можно найти здесь и Java .
-121--3366998-Мне известно как минимум о двух.
Довольно слабые точки. так что старайтесь всегда использовать make_shared.
В дополнение к пунктам, представленным @deft_code, еще более слабый:
weak_ptr
s, которые живут после того, как все shared_ptr
s к данному объекту умерли, то память этого объекта будет жить в памяти вместе с управляющим блоком до тех пор, пока не умрет последний weak_ptr. Другими словами, объект уничтожается, но не деблокируется до тех пор, пока не будет уничтожен последний weak_ptr
.