堆栈大小设置过大的未定义行为

背景

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

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

解决

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

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

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

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

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

结论

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值