gpt4 book ai didi

c++ - 具有自己的内存分配的类的设计

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:28 24 4
gpt4 key购买 nike

我在设计将使用自己的内存分配的适当类时遇到了一些麻烦。考虑一下:

class IAbstract { ... };
class CConcrete : public IAbstract { ... };

我想做这样的事情:

IAbstract *ptr = new CConcrete();
delete ptr;

问题是,我希望 CConcrete 的"new"使用内存分配器。另外,我希望“删除”使用适当的释放器。但是,new 和 delete 是静态函数,因此上面示例中的 delete 不会调用 CConcrete 的 delete(如果 delete 是虚拟的,它应该这样做)。

解决这个问题的一种方法是制作这样的东西:

class IAbstract {
public:
virtual Delete(void* ptr)=0;
void operator delete(void* ptr) {

((IAbstract*)(ptr))->Delete(ptr);
}
};

并在派生类中重写 Delete。但是这个解决方案非常难看,尤其是将 ptr 转换为 IAbstract*。

有没有更好的方法呢?

最佳答案

你试过吗? Placement new/delete

关于c++ - 具有自己的内存分配的类的设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13091147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com