что освобождается? или это в процессе выполнения должна ошибка выйти?
потому что компилятор не подписывался таким заниматься
Компилятор не даст вызвать delete не на указателе
А можно тогда delete &object; ? Ему же адрес нужен?
вот мне тоже кажется в данном случае должен сругаться, попытка освободить память не по указателю
О да, отличный способ отстрелить ногу!
Так он и ругается: https://t.me/supapro/969316
да пусть так и пишет, люди которые не желают вникать должны страдать
Да я прочитал, что с указателями (тогда кстати мне не понятно почему вы спросили «причем здесь указатели?»). А вот приплетать указатель на объект, который описан в этом же файле... (Зачем?) И почему "отличный способ отстрелить себе ногу", если использовать не указатель, а просто адрес объекта?
Хорошо. Как должен будет себя вести следующий код? magic(object); // объект уничтожен auto a = object.member; // ?
потому что перед тем как начинать писать на языке, нужно почитать про него литературу, там будет написано, что кроме delete есть ещё и new, про автоматическую и динамическую память, и много классных увлекательных вещей, которые сильно помогают писать код, который хотя бы компилируется
С питоном по другому работает...
>>> delete a File "<stdin>", line 1 delete a ^ SyntaxError: invalid syntax
программирование наугад не работает ни в одном языке я думаю
Ну как я понял, он должен автоматически определить тип данных object.member, создать переменную a этого типа и приравнять её к object.member.
Вопрос был о другом. Допустим, найдётся магический способ уничтожить существующий объект object. Что должно произойти при попытке доступа к его мемберам?
Какая ошибка? Компилятор? Рантайм? UB?
Наверное, ошибка сегментирования.
Обсуждают сегодня