我刚刚在 C++ 中遇到了一些容器实现。该类使用内部缓冲区来管理其对象。这是一个没有安全检查的简化版本:
template <typename E> class Container
{
public:
Container() : buffer(new E[100]), size(0) {}
~Container() { delete [] buffer; }
void Add() { buffer[size] = E(); size++; }
void Remove() { size--; buffer[size].~E(); }
private:
E* buffer;
int size;
};
AFAIK ,如果/未自定义,这将E
冗余地构造/破坏对象。这似乎很危险。Container()
~Container()
new
delete
new
是否以最佳方式使用放置Add()
来防止危险的冗余构造函数/析构函数调用(除了将类绑定到功能齐全的池)?
使用放置new
时,new char[sizeof(E)*100]
分配缓冲区的正确方法是什么?