Chinaunix

标题: [求助]GDB调试出错:what(): std::bad_alloc [打印本页]

作者: ironside_zy    时间: 2009-12-30 18:05
标题: [求助]GDB调试出错:what(): std::bad_alloc
调试程序到这里:
327              output.m_iBufSize = (size < 64000000) ? 64000000 : size;
(gdb)
328              output.m_pcResult = new char[output.m_iBufSize];

报错:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Program received signal SIGABRT, Aborted.
0x001c1422 in __kernel_vsyscall ()

自己去写了个测试小程序,能new char[64000000],不知是怎么回事,望前辈指点一下,谢谢!
作者: phy0077    时间: 2009-12-30 19:41

作者: tyc611    时间: 2009-12-30 21:14
output.m_iBufSize = (size < 64000000) ? 64000000 : size;  难道是大于?
内存不够了,你调试时m_iBufSize为多少?
作者: tianxiaogang12    时间: 2009-12-30 22:18
查看下m_iBufSize 大小
作者: ironside_zy    时间: 2009-12-31 09:16
标题: 回复 #4 tianxiaogang12 的帖子
m_iBufSize=64000000     (64M)

这是一段运行在某个线程中的代码,我想可能是线程栈大小不够,但网上有人说LINUX中栈大小可自动调整。。。
作者: weble    时间: 2010-01-01 09:26
标题: 回复 #5 ironside_zy 的帖子
64M=64*1024*1024
作者: elvalanna    时间: 2010-11-09 09:13
new应在是在堆里分配空间的吧
作者: pagx    时间: 2010-11-09 10:42
size , 这个是有符号整数?如果是的话,检查一下是否是正数。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2