我得到我的多线程应用程序崩溃,我怀疑被堆栈溢出(应该是一个不错的网站问这个问题),因为我在做一些非常深刻的递归和崩溃不会的更小的订单发生问题。 我使用boost ::线程。 它提供了通过一个属性possibillity设置堆栈大小(预先):
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 2008年9,boost_1_54_0)? 此外,这怎么会涉及到我会把在连接设置(属性 - >链接器 - >系统 - >堆栈保留大小 - > 800万为例)的价值?
有没有检查我有多少堆在运行时左(在当前线程)一个便捷的方式? 曾经是在malloc.h所和/或stdlib.h中的方便stackavail()函数似乎已经消失。
在此先感谢,丹尼尔·德克斯