2011-01-02 10 views
1

私は一時的なオブジェクトスタックを作成していました。主にヒープベースのSTL構造体を使用していましたが、実際には一時的な存続期間しかありませんでした。 1つのスタックは、展開されていないリンクリストに格納されているすべての型を実行します。メモリアロケータのオーバーヘッド

私はアライメントを持って作ってきました。私はstd::alignment_of<T>で整列を得ることができますが、私はの整列が必要なので、これは本当に素晴らしいことではありません。割り当てたいタイプはです。今は、各オブジェクトのサイズを任意に16の倍数に設定しました。これは、わかっている限り、すべてのx86またはx64タイプの最大の配置です。しかし、オブジェクトごとにメモリオーバーヘッドの2つのポインタとベクトルに割り当てるコストと、16の倍数になるまでのすべてのサイズを作るためのコストがあります。

プラス側、建設と破壊は迅速で信頼性が高い。

これは、通常の演算子new/deleteとはどう違うのですか?そして、どのような種類のテストスイートを走らせることができますか?私は私の現在の進歩にかなり満足していますし、後でそれが厄介な微妙な方法で盗まれていることを知りたくはありません。

答えて

0

これは本当にあなたの質問に答えるわけではありませんが、Boostは最近、最新のバージョンにmemory poolライブラリを追加しました。

これはまさにあなたが望むものではないかもしれませんが、徹底的に考えている可能性がありますtreatment of alignmentがありますか?ドキュメントが十分でない場合は、常にソースコードがあります。