我有几个连接到AngelScript引擎的类。该引擎使用有趣的方式来分配对象:它分配所需的内存量(可能使用malloc()
),当作者建议使用这样的构造在此内存中创建对象时:
static void Constructor(ObjectType *thisPointer)
{
new(thisPointer) ObjectType();
}
和这样的代码来销毁对象:
static void Destructor(ObjectType *thisPointer)
{
thisPointer->~ObjectType();
}
我有几个问题:
- 以这种方式使用析构函数是否正确?(Eclipse 判断这是一个错误)据我所知,这段代码应该调用析构函数而不释放内存(调用
free()
) - 是否可以使用
delete(thisPointer)
(或类似的东西)代替这种结构,它是否等效?(至少这段代码在编译和运行时没有出错) - 有没有其他方法可以在不释放内存的情况下调用析构函数?
先感谢您。