【发布时间】:2012-02-08 01:56:21
【问题描述】:
我正在阅读这个问题Does calling a destructor explicitly destroy an object completely?,这种情况出现在代码中。
Object* aWidget = new Widget(); //allocate and construct
aWidget->~Object(); //destroy and DON'T deallocate
从答案中,我不明白在这种情况下内存区域实际上没有被释放。我的问题是(更多的是出于好奇):
上面两行代码执行完毕后,如何删除aWidget指向的内存?我假设调用delete aWidget; 会失败,因为它会尝试在已经破坏的对象上运行析构函数。你能打电话给free(aWidget) 或类似的东西来只针对内存吗?
【问题讨论】:
-
我不确定,所以我将发布作为评论,但您可以致电
operator delete(aWidget)。不过,我很想看到将其作为有效用例的代码! -
@CoryNelson 你是对的,看看我的回答。当你发表评论时,我正在输入它。