Нет, размещенный код не является ни полезным, ни безопасным.
Существует три сценария, и ни один из них не имеет положительного результата:
- Объект создан в автоматическом хранилище
В этом случае объект будет уничтожен, когда он выйдет из области видимости.Его деструктор будет запущен и попытается освободить память, которой он не владеет, что приведет к неопределенному поведению.
Пример
Объект создается в динамическом хранилище и получает
delete
d от вызывающей стороны
В этом случае деструктор будет вызываться при вызове вызывающей стороны (или некотором умном указателе, созданном вызывающей стороной) delete
s объект.Затем ваш деструктор снова попытается delete
объект, что приведет к неопределенному поведению.
Пример
Объект создается в динамическом хранилище и не получает
delete
d от вызывающей стороны
В этом случае объект никогда не будет уничтожен.Его деструктор никогда не будет вызван, и его хранилище будет утечка.Ваш дополнительный shared_ptr
участник ничего не достиг.
Пример