Является ли вызов деструктора объекта эквивалентным вызову удаления объекта?
Нет, это не эквивалентно.
Вызов деструктора объекта уничтожает его.
Вызов delete
по указателю уничтожает указанный объект и освобождает память. Поведение не определено, если только указатель не был возвращен при выделении new
.
Если вы выделите память с помощью new
и вызовете деструктор только без освобождения, то вы потеряете память. Если вы уничтожите объект и попытаетесь использовать delete
, в то время как указанный объект уничтожен, то поведение вашей программы будет неопределенным.
PS Избегайте использования голых указателей.