我在读这个问题Does calling a destructor explicitly destroy an object completely?这种情况出现在代码中。手动调用析构函数后如何删除内存?
Object* aWidget = new Widget(); //allocate and construct
aWidget->~Object(); //destroy and DON'T deallocate
从答案,我undrestand,内存区域实际上不会在这种情况下释放。我的问题是(更多的好奇心比任何东西):
如何删除上面的两行代码执行后由aWidget指向的内存?我会假设调用delete aWidget;
会失败,因为它会尝试在已经被破坏的对象上运行析构函数。你可以打电话free(aWidget)
或类似的东西,而只是针对内存?
我不能肯定,所以我张贴的评论,但你可以叫'delete操作符(aWidget)'。尽管如此,我仍然很想看到作为有效用例遇到的代码。 – 2012-02-07 17:52:23
@CoryNelson你是对的,看我的答案。我在发布评论时正在输入它。 – 2012-02-07 17:57:13