首页
社区
课程
招聘
[求助]CreateThread失败
发表于: 2013-9-21 15:04 9022

[求助]CreateThread失败

2013-9-21 15:04
9022
m_hSendRecvThread = CreateThread(NULL, NULL, pfnSendRecv.ThreadPorc, (LPVOID)this, NULL, NULL);
        if (NULL == m_hSendRecvThread)
        {
                MyTrace(L_ERROR, "CreateThread failed [send/recv]. err=0x%x",  GetLastError());
                return RA_ERR_CREATE_THREAD_FAILED;
        }

CreateThread failed [send/recv]. err=0x8
0x8:存储空间不足,无法处理此命令。

程序会要求创建好多个线程,有时候创建失败,我估计这个和堆栈/堆参数设置有关.
我使用过默认不改/堆,堆栈四个参数都改成100000000,还是会出现上述错误.
而且我改成100000000,该程序占用的内存并没有增大,这是和解?
注:机子内存绝对充足,还有10多G没用呢
请高人指点迷津

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (13)
雪    币: 1392
活跃值: (4867)
能力值: ( LV13,RANK:240 )
在线值:
发帖
回帖
粉丝
2
10多G内存? 你是服务器吧。
再说了,为什么要指定堆栈呢???
让CreateThread自动分配就行了。全填NULL
2013-9-21 15:19
0
雪    币: 126
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3

我调用CreateThread的时候堆栈大小默认是NULL,但也试过改成4K之类 还是出错,其实本身没有特别大的局部变量或者数组,应该不需要特别大的堆栈的

上面是项目的堆栈,目前是默认值0/0/0/0,但也改成过如图所示的100M,照样出错
上传的附件:
2013-9-21 15:25
0
雪    币: 1042
活跃值: (470)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
没动过VS的配置.
2013-9-21 16:19
0
雪    币: 126
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
VS配置没改过..
2013-9-21 16:46
0
雪    币: 297
活跃值: (235)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
6
没法看last error么
2013-9-21 18:50
0
雪    币: 70
活跃值: (88)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
7
他上面已经讲了,,
“CreateThread failed [send/recv]. err=0x8
0x8:存储空间不足,无法处理此命令。”
2013-9-21 21:08
0
雪    币: 70
活跃值: (88)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
8
没有改过堆的配置,不过本人感觉应该不是这个问题。
2013-9-21 21:17
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
10+G的内存就是服务器了?我现在笔记本没12G内存都没法工作.以前8G内存开个QQ开个Chromium开个虚拟机就报内存不足
2013-9-21 23:29
0
雪    币: 70
活跃值: (88)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
10
我的笔记本6G,开个Chromium,开个虚拟机并同时开两个虚拟系统。
嘿嘿。。好像把虚拟内存页面弄大点也可正常工作吧。
2013-9-22 00:47
0
雪    币: 112
活跃值: (57)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
11
您有没有Demo能重现这个问题,传上来,大家看看。
2013-9-22 04:33
0
雪    币: 291
活跃值: (164)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
是堆栈大小设置,假如多开线程一定会有这个问题。把堆栈大小设置为100M,估计就差不多了,你设置100000000,是8个0,这是十六进制的话,就是一个G了,开7,8个线程就会失败
2013-9-22 10:45
0
雪    币: 126
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
把所有线程的创建时的堆栈参数全改成默认值0,项目堆栈设置为保留物理内存为100M,虚拟内存为0.(系统设置是禁用虚拟内存的). 堆大小设置全是默认0
这样重新编译后,没有再重现问题, 感觉没有找到问题的根因, 只能先这样放着吧
3ks
2013-9-22 19:05
0
雪    币: 53
活跃值: (734)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
08这个错误很熟悉啊。 我记得以前碰到过,印象比较深刻。 如果你是用的win7且进程为服务启动的SYSTEM用户  那就比较麻烦了。
2013-9-24 14:15
0
游客
登录 | 注册 方可回帖
返回
//