关于MFC开线程失败和堆栈溢出的问题,求指点,谢谢关注

wk119911 2012-07-28 04:07:58
编程环境: vs2008

问题背景: 程序中有一个大的三维数组 double vote_middle[ImgHeight][ImgWith][8]={0}; 编译是Stack 溢出了

于是修改了堆栈大小,堆栈保留大小和提交大小都设为了 : 1024000000
问题描述: 然后,程序中需要开一个线程:
HANDLE pThread = CreateThread(NULL,0,ThreadDisplay,(LPVOID)m_hWnd,0 ,NULL);
错误出现了: 线程开不开,使用GetlastError :返回 存储空间不足,无法处理此命令。

然后,我把堆栈保留大小和提交大小都设为了 : 25600000 ,线程可以打开了,堆栈却溢出了

现在请大家指点一下,不能感激!








...全文
252 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
看不见的裂痕 2012-07-30
  • 打赏
  • 举报
回复
又是个用三维数组的。上次也有个人这么问,后来回去优化了存储结构。

主要是确定需要这么大空间么?能不能事先预估存储容量
schlafenhamster 2012-07-30
  • 打赏
  • 举报
回复
1024000000=1G ?
恐怕new都不行
Eleven 2012-07-29
  • 打赏
  • 举报
回复
动态分配吧,new
Atomictry 2012-07-29
  • 打赏
  • 举报
回复
用static或new
lijianli9 2012-07-29
  • 打赏
  • 举报
回复
一个线程默认的空间是1M,你可以在开启线程的使用修改这个默认大小。createthread中参数有。

lijianli9 2012-07-29
  • 打赏
  • 举报
回复
你试试new呀,
lijianli9 2012-07-29
  • 打赏
  • 举报
回复
double vote_middle[ImgHeight][ImgWith][8]={0};如果太大,不要放到线程函数中,用new动态申请比较好,
wk119911 2012-07-29
  • 打赏
  • 举报
回复
这个三维数组是在子函数的中,我希望,每次调用这个子函数的时候都能初始化一下这个数组, 请大家给点具体点解决方法,static 我用过,效果没有变化,谢谢
wk119911 2012-07-29
  • 打赏
  • 举报
回复
这个三维数组是在子函数的中, 请大家给点具体点解决方法,static 我用过,效果没有变化,谢谢

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧