かなり深い再帰を行っているため、スタックオーバーフローであると思われるマルチスレッドアプリケーションでクラッシュが発生しています(この質問をするのに最適なサイトである必要があります)。問題。私はブースト::スレッドを使用しています。属性を介して(事前に)スタックサイズを設定する可能性を提供します。
boost::thread::attributes l_ThreadAttributes;
l_ThreadAttributes.set_stack_size(8000000);
boost::thread l_MyThread(l_ThreadAttributes, l_MyFunctor);
これが実際に機能するかどうかはあまり確信が持てません。同じ属性「get_stack_size()」を介して現在のスタック サイズを尋ねると、0 が返されます。経験のある人はいますか (私は Windows 7 32 ビット、Visual Studio 9 2008、boost_1_54_0 で作業しています)。さらに、これはリンカー設定に入れる値とどのように関係しますか (たとえば、[プロパティ] -> [リンカー] -> [システム] -> [スタック予約サイズ] -> [8000000])?
実行時に (現在のスレッドで) スタックがどれだけ残っているかを確認する便利な方法はありますか? malloc.h や stdlib.h にあった便利な stackavail() 関数はなくなったようです。
前もって感謝します, ダニエル・デッカーズ