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