C++ 是否在不调用其重写的删除运算符的情况下删除对象?

C++ 是否在不调用其重写的删除运算符的情况下删除对象?,c++,memory,delete-operator,C++,Memory,Delete Operator,我正在处理一个不是我自己的系统,需要从创建系统时未考虑的上下文中删除一个对象 my_class的delete函数使用分配给每个工作线程的动态分配器/解除定位器。我引入了一个新的线程(目前没有这个功能),它需要能够像“正常”一样删除和释放对象的内存 有办法做到这一点吗?我正在寻找任何旧的快速/混乱的解决方案,以便我可以尽快执行我的程序(它似乎正在耗尽内存) 编辑:也许更多的上下文 类的删除运算符: void my_class::operator delete( void * p ) {

我正在处理一个不是我自己的系统,需要从创建系统时未考虑的上下文中删除一个对象

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

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

编辑:也许更多的上下文

类的删除运算符:

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

是否有一种方法可以执行删除/解除分配,就像它没有这个专门的删除功能一样?

您可以尝试显式调用析构函数,然后调用运算符delete

my_class* p = ...;

p->~my_class();
::operator delete(static_cast<void*>(p));
my_class*p=。。。;
p->~my_class();
::运算符删除(静态_cast(p));

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

“重写
delete()
函数”我会为此感到遗憾,但那是什么?你是说这个类有一个你不想使用的被重写的
操作符delete()
?正如你所知,除了简单的malloc/free之外,我在C/C++和内存分配/释放方面没有太多经验。我指的是delete操作符,而不是额外的delete函数本身(我会编辑)。您想
删除的内存是如何分配的?@WhozCraig这是必需的吗?我认为任何指针都可以隐式转换为void*。我认为询问者可能想调用
free()
,但让他或她澄清一下。@john不,不是这样,但我是偏执狂=)我认为它会“起作用”(人是一个相对术语),无论哪种方式=)顺便说一句,你可以很好地解决这个问题=P@jxh对问题是这些对象最初是如何分配的。如果类有一个重载的deleter,那么它可能有一个重载的分配器。所以像那样调用delete会做各种各样的坏事。我们需要知道分配器做什么。没有这些信息,这是个坏主意。