我在讀這個問題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