我有这个代码:
struct data {
void doNothing() {}
};
int main() {
data* ptr = new data();
ptr->~data();
ptr->doNothing();
::operator delete(ptr);
}
请注意,doNothing()
在对象被销毁之后但在其内存被释放之前调用它。看起来“对象生命周期”已经结束,但是指针仍然指向正确分配的内存。成员函数不访问任何成员变量。
在这种情况下,成员函数调用是否合法?