Конечно, следующий не должен быть выполнен, хотя он действителен для компилятора. Но что происходит, когда вы делаете?Использование нового оператора для статического выделения объекта
CClass clss = *new CClass();
В отличие от вышесказанного, следующий компилируется, но дает ошибку утверждения.
delete &clss;
Связано ли это с распределением памяти как в стеке, так и в куче?
экземпляр 'clss' становится копией инициализированного по значению, динамически выделенного экземпляра' CClass' и имеет автоматическое хранилище, которое не может быть освобождено с помощью 'delete' (* если этот класс не предоставляет класс-специфический' удаление' оператор) –
@PiotrS. моя логика говорит мне, что такой оператор класса 'delete' должен быть сдержан для очистки членов, это правда? – brainoverflow
его деструктор, который отвечает за правильную очистку элементов, на самом деле с удалением класса, вызванным в автоматическом экземпляре хранилища, он будет дважды вызван –