堆栈大小引发的大问题

背景

同样的程序,在两个不同的计算机上运行。台式电脑运行正确,一点错没有,但是当我把程序放到笔记本上运行时,出现了莫名奇妙的错误。

win32的打开文件对话框出现问题,打开直接没有反应,每次重启之后才能能打开文件选择界面,但是没办法跳转到其它路径,只能选择默认路径下的文件。
ok,手动改默认路径,选到心仪的文件,问题又来了。thread_monitor::launch: _beginthreadex failed,报这个错,锁定函数,发现是并行库tbb的问题,一顿操作(搜索),似乎就我自己有这样的问题,完蛋。

解决

由于对win32的系统api不太熟悉,没有第一时间找到原生的错误,一直将问题归咎于系统,遂反复更新系统,依然无效,于是当前唯一有效的方法——等win10的更新。。。。。。

今早根据GetOpenFileName,也就是第一个出错的函数,搜索到CommDlgExtendedError这个关键函数,返回win32 dialog的错误码。2—-CDERR_INITIALIZATION, 内存不足导致初始化错误。

明确方向,增大文件名缓冲区大小,无效。内存?一个dialog要个啥的内存。麻了。。。。。。

内存,栈,堆,程序初始哪来的堆? 栈,我也没对栈干什么啊! 莫非。。。。。。

堆栈保留大小,卧槽,这谁设置的堆栈大小,应该是我,为啥?不知道(傻逼)。删除,成了。

结论

不要轻易设置堆栈保留大小,会出大问题,影响心理健康,世界和平。