Это безопасно и правильно?
Это работает . То есть он имеет четко определенное поведение и не дает утечек (при условии, что он компилируется).
Но безопасно? Это - опасная идея иметь свободные псевдонимы-указатели. Вы должны отслеживать, какие указатели были удалены, а какие нет; которые указывают на память, которая была удалена, а какая нет.
Гораздо безопаснее использовать дескрипторы с поддержкой RAII для управления динамически размещенными объектами, такими как std::unique_ptr
и std::shared_ptr
(или ускоренные замены). std::unique_ptr
не позволяет создавать псевдонимы, а std::shared_ptr
позволяет создавать безопасные псевдонимы.