-1

我正在开发一个不是我自己的系统,并且需要从创建系统时最初没有考虑的上下文中删除一个对象。

的删除功能my_class使用分配给每个工作线程的动态分配器/释放器。我引入了一个新线程(目前没有这个功能),它需要能够像“正常”一样删除和释放对象的内存。

有没有办法做到这一点?我正在寻找任何旧的快速/混乱的解决方案,以便我可以尽快执行我的程序(它似乎内存不足)。

编辑:也许更多的上下文。

类的删除运算符:

void my_class::operator delete( void * p ) {
       worker_thread::get_allocator().deallocate( (my_class*)p, 1 );
}

有没有办法可以像没有这个专门的删除功能一样进行删除/解除分配?

4

1 回答 1

2

您可以尝试显式调用析构函数,然后调用 operator delete。

my_class* p = ...;

p->~my_class();
::operator delete(static_cast<void*>(p));

这不是严格正确的,但它可能会起作用。这是否是一个好主意是另一个问题。

于 2013-09-25T23:27:29.763 回答