我有幾個類,我連接到AngelScript引擎。這款發動機採用有趣的方式來分配對象:它分配的內存(可能malloc()
),當作者提出使用建築像這樣在這個內存中創建對象所需量:相當於調用Object的delete(Object)〜Object()
static void Constructor(ObjectType *thisPointer)
{
new(thisPointer) ObjectType();
}
和這樣的代碼來破壞對象:
static void Destructor(ObjectType *thisPointer)
{
thisPointer->~ObjectType();
}
我有幾個問題:
- 是否使用析構函數這樣正確的方式? (Eclipse的法官這個bug)至於我能理解這個代碼應該調用析構函數,而不釋放內存(主叫
free()
) - 是否有可能使用
delete(thisPointer)
(或類似的東西),而不是這種結構,是這將是當量? (至少這段代碼在編譯和運行時沒有提供任何錯誤) - 有沒有其他方法可以在不釋放內存的情況下調用析構函數?
在此先感謝您。
找到「位置刪除」找到[Stroustrup:C++風格和技巧常見問題](http://www2.research.att.com/~bs/bs_faq2.html#placement-delete),並簡短回答問題「是否有「刪除位置」?「 - 「不,但如果你需要一個,你可以自己寫。」也許這會幫助別人。 –