Удалить на уже удаленном объекте: поведение?

Мне интересно, что произойдет, если я попытаюсь выполнить delete на указателе, который уже удален, или может быть не выделено? Я прочитал две вещи: во-первых, оператор delete будет выполнять некоторые проверки, и нам не нужно проверять, является ли указатель нулевым; а затем я прочитал, что это может привести к неизвестному поведению ...

Я спрашиваю об этом, потому что я использую некоторые личные объекты, которые содержат атрибуты объектов Qt; Я думаю, что Qt удаляет все связанные виджеты, когда мы закрываем окно, но я не совсем уверен: если мягкий сбой происходит до закрытия окна, мы должны удалить все объекты вручную.

Итак, какое было бы лучшее решение? Что-то вроде этого?

if( my_object )
    delete my_object;

Можно ли избежать опасного поведения?

8
задан Brian Tompsett - 汤莱恩 16 August 2015 в 11:11
поделиться