问题描述
请看看以下课程:
template<typename A,typename B,typename AllocA = std::allocator<A>,typename AllocB = std::allocator<B>>
class cls {
public:
cls(size_t size) :
size{ size },a{ alloc_a.allocate(size) },b1{ alloc_b.allocate(size) },b2{ alloc_b.allocate(size) }
{}
void reallocate() {
alloc_a.deallocate(a,size);
alloc_b.deallocate(b1,size);
alloc_b.deallocate(b2,size);
a = alloc_a.deallocate(size);
b1 = alloc_b.deallocate(size);
b2 = alloc_b.deallocate(size);
}
~cls() {
alloc_a.deallocate(a,size);
}
private:
size_t size;
AllocA alloc_a;
AllocB alloc_b;
A* a;
B* b1;
B* b2;
};
我想以某种方式重写此类,以在某些分配器的allocate
或deallocate
方法引发异常时正确地防止内存泄漏。我知道std::unique_ptr
以及一般来说RAII的概念。但是,我
另外,我需要在初始值设定项列表中进行第一次分配,因为在实际使用情况下,指针成员实际上是模板的 some 专业中的const
。
现在,这些有很多要求和期望,但是由于我们在这里谈论C ++,所以我觉得仍然有一种方法可以将其存档。还是我实际上需要削减需求?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)