我正在阅读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)
或类似的名称来仅针对内存吗? 最佳答案
实际上,free
是我的最佳猜测。但是,我认为如果不调用UB,您将无能为力。您如何达到这样调用析构函数的要求?