もしかして・・・

yaneSDK::CMemoryAllocatorPoolって高速でもなんでもない?
ただスタック上のメモリからアロケートしたいときに使うだけ?
しかもどうやらスタック領域が分割されるたびにCMemoryTableテンポラリオブジェクトを作ってる模様。それで1フレームに160個も弾を作ったらあんなにやたらめったら重くなるわけか?
テンポラリオブジェクトをlistに挿入ってことはlistは引数コピーで保持してるわけね。そりゃ重いわ・・・ってそんなわけないじゃん
listはちゃんと参照引数で取ってますよ。あれ?じゃあなんでテンポラリオブジェクトがスコープを出た後でもlistの中身は正常に参照できるの?listにテンポラリオブジェクト挿入って何テク?


ああまた知らん仕様が・・・

すぐ追記

初心者の壁といわれるポインタでは別につまづかなかったが・・・参照、const参照、一時変数(テンポラリオブジェクト)、コピーコンストラクタ、代入演算子・・・ホントC++は難しい・・・


てことで、大変わかりやすい文献を見つけました。
http://www.cmo.jp/users/zakincho/cpp/ref.html
これの「const なリファレンスの初期化によるテンポラリオブジェクトの延命」て箇所ですな。
まず、オ㍗ル俺様は一時変数とローカル変数を同じもんだと思っちょりました。ホント生きててすいません。ローカル変数の寿命は宣言されたスコープ内。一時変数の寿命はその文の中まで(文末のセミコロンまで)。

{
    CHoge hoge;    //ローカル変数。このスコープ{}の最後まで有効
    CHoge();       //一時変数。この行でのみ有効
}

で、const参照の初期化にこの一時変数を使う時に限り、一時変数の寿命がやや延びるようです。例えば、今回の話であるstd::listのinsert()の場合、「const参照型引数の初期化」に当たるので、一時変数の寿命はinsert()の呼び出しを含む行全体になります。つまり、insert()の処理が行われている間は、一時変数は生き続けるわけです。
で、std::list::insert()の中身を見ていくと・・・


newキタ━━━━━━(゚∀゚)━━━━━━━!!!!!


おもいっきしnewしちょります・・・で、そのコンストラクタでT型のメンバ変数をconst参照引数で初期化しちょります・・・。


重いのはコレか


しかしほんとにこれだけが処理落ちの原因なのかはまだわかりませんが(っていうかたぶんほとんど俺様のへぼコーディングのせい)、とりあえずSTLの中身くらいは一度は見ておきましょうってことですね・・・。