AngelScriptエンジンに接続したクラスがいくつかあります。このエンジンは、オブジェクトを割り当てるために興味深い方法を使用します。必要な量のメモリを割り当てます(おそらくでmalloc()
)。作成者がこのような構造を使用してこのメモリにオブジェクトを作成することを提案する場合:
static void Constructor(ObjectType *thisPointer)
{
new(thisPointer) ObjectType();
}
オブジェクトを破棄するには、次のようにコーディングします。
static void Destructor(ObjectType *thisPointer)
{
thisPointer->~ObjectType();
}
いくつか質問があります。
- このようにデストラクタを使用するのは正しい方法ですか?(Eclipseはこれをバグと判断します)私が理解できる限り、このコードはメモリの割り当てを解除せずにデストラクタを呼び出す必要があります(呼び出し
free()
) - この構造の代わりに(またはそのようなものを)使用することは可能
delete(thisPointer)
ですか?それは同等ですか?(少なくともこのコードは、コンパイルおよび実行時にエラーを発生させません) - メモリの割り当てを解除せずにデストラクタを呼び出す他の方法はありますか?
前もって感謝します。