我有几个类,我连接到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),并简短回答问题“是否有“删除位置”?“ - “不,但如果你需要一个,你可以自己写。”也许这会帮助别人。 –