内部でのみ呼び出す(二重)リンクリストを実装しようとしてplacement new
います。すべてのメモリを次のような割り当てられたプールに向けます。
char *memPool = new char[4096]; // One-off normal 'new'
最初は、事前に割り当てられたメモリ プール (を管理するクラス) へのポインターを受け取る独自のクラスを実装するつもりでした。ただし、 で同じ結果を達成できないことを最初に確認したいと思いますstd::list
。特に、この SO の質問に対する David Rodríguez の回答の 3 番目のセクションが心配です。
コンポーネント ノードでandstd::list
を呼び出す必要があるのは理にかなっていますが、すべてのノードがカスタム プールに割り当てられるように、この動作を変更したいと考えています。したがって、私の質問は次のとおりです。new
delete
placement new
次のように指定する方法はありますかplacement new
std::list
:
std::list<std::shared_ptr<Cls>> myList = new (pool.getFreeAddr()) list<Cls>;
また、カスタム アロケータを使用してノードを割り当てる必要があるため、すべてが厳密に自分のメモリ プール内に格納されます。
(注shared_ptrs
:カスタムメモリプールでもそれらが必要な場合は、カスタム割り当て/削除関数を使用する必要があることを認識しています。)