int main()
{
myClass obj;
.... /* doing things */
....
delete &obj; /* illegal */
}
Предположим, что myClass является подходящим классом C++ со всем на месте. Теперь я знаю, что это незаконно, и эта программа выйдет из строя во время выполнения. Дело в том, что код пытается удалить объект стека, а затем, после завершения области, он снова будет уничтожен. Я хочу знать внутренности этой незаконной операции. то есть что произойдет с удалением, вызовет ли он деструктор? Это может показаться вам безумным, но, пожалуйста, помогите мне понять.Незаконное удаление объекта стека
Это будет * возможно, сбой, но, как и в случае с неопределенным поведением, он может, с другой стороны, не сбой или сбой большую часть времени, но не всегда, или даже вызвать [носовые демоны] (http://www.catb.org/jargon/html/N/nasal-demons.html). Более подробно о вашем вопросе, на самом деле нет способа рассказать, как это будет обрабатываться, характер неопределенного поведения в большинстве случаев непредсказуем. –
Нетрудно узнать, что он на самом деле делает, проверяя сгенерированный код в неоптимизированных сборках. – sehe
Это не обман. ОП здесь не спрашивает, безопасно ли это, они знают, что это не так. – jrok