У меня есть этот код:
struct data {
void doNothing() {}
};
int main() {
data* ptr = new data();
ptr->~data();
ptr->doNothing();
::operator delete(ptr);
}
Обратите внимание, что doNothing()
вызывается после того, как объект был уничтожен, но до того, как его память была освобождена. Похоже, что "срок жизни объекта" закончился, но указатель все еще указывает на надлежащую выделенную память. Функция-член не имеет доступа к элементарным переменным.
Будет ли вызов функции-члена законным в этом случае?