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;
};
私の知る限り、 /がカスタマイズされていない場合、これはE
オブジェクトを重複してContainer()
構築/破棄します。これは危険なようです。~Container()
new
delete
危険な冗長なコンストラクタ/デストラクタの呼び出しを防ぐための最良の方法で配置new
を使用しAdd()
ていますか (クラスを完全な機能のプールにバインドすることは別として)?
配置を使用する場合new
、new char[sizeof(E)*100]
バッファを割り当てる正しい方法はありますか?