Ваш код действительно использует обычный способ создания и удаления динамического объекта.Да, это совершенно нормально (и действительно гарантировано стандартом языка!), Что delete
вызовет деструктор объекта, точно так же, как new
должен вызвать конструктор.
Если вы не создавали экземпляр Object1
непосредственно, но некоторый его подкласс, я напомню вам, что любой класс, от которого предполагается наследовать, должен иметь виртуальный деструктор (так, чтобы деструктор правильного подкласса мог быть вызван в случаях, аналогичных этому) -но если ваш пример кода действительно представляет ваш реальный код, это не может быть вашей текущей проблемой - должно быть что-то другое, возможно, в коде деструктора, который вы нам не показываете, или какое-то повреждение кучи в коде, который вы не делаетепоказывая внутри этой функции или тех, которые она вызывает ...?
Кстати, если вы всегда собираетесь удалять объект непосредственно перед выходом из функции, которая его создает, нет смысла делать этот объект динамическим -- просто объявите его как локальную (класс хранения auto
, как по умолчанию) переменную указанной функции!