有些怪异的core问题,请高手帮忙解答下

sd666850 2010-03-30 11:40:44
代码
for( i=0 ; i < g_Temp ; i++ )
{
g_info[i].bool = true ;
}
具体的记不住了,大概就是这么个意思,用GDB调试,就core在了赋值那里,当时i是1万7千多,g_Temp自己赋值给它的,当时是10万,然后就dump了
本来这段程序时没有问题的,g_Temp的值为8000,改之后就dump了,后来我觉得10万太大了,就改成了8万,还是dump,再后来我猜是不是16位的短整型,就把他改为60000,就不dump了
但是我还分析不出来是它dump的原因是什么?请高手指点下
...全文
135 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wolf0403 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 jackyjkchen 的回复:]

引用 14 楼 sd666850 的回复:
数组没有越界,但是malloc分配得太大了的

不会是超出int的范围了吧……结果溢出分配了个小内存
[/Quote]
鉴于此,请在编译时打开 -Wall
xiangweixing 2010-04-01
  • 打赏
  • 举报
回复
某某9 2010-04-01
  • 打赏
  • 举报
回复
数组越界了~~ ?、!
sd666850 2010-04-01
  • 打赏
  • 举报
回复
invalid or incomplete multibyte or wide character
ForestDB 2010-04-01
  • 打赏
  • 举报
回复
如有可能,看看汇编码,这样能对数据的长度有个认识(比如是short还是int)。
-Wall
palsword 2010-03-31
  • 打赏
  • 举报
回复
看这个样子,我想问一下,i是怎么声明的?呵呵。。
不会是它越界了吧?HOHO
东大坡居士 2010-03-31
  • 打赏
  • 举报
回复
应该是数组越界了~~
cattycat 2010-03-31
  • 打赏
  • 举报
回复
g_info如果是局部变量数组就会堆栈溢出,内存不够。如果很大,就用new的或malloc的。看数组大小分配的是多大的。
另外bool看着像关键字。
jackyjkchen 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sd666850 的回复:]
你说的很对,今天我定位了一下,g_info这个数组是malloc出来的,有点大,我不知道在程序中,我们malloc的最大值是多少呢?
[/Quote]
malloc最大2G,你那里多大
jackyjkchen 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 sd666850 的回复:]
数组没有越界,但是malloc分配得太大了的
[/Quote]
不会是超出int的范围了吧……结果溢出分配了个小内存
Wolf0403 2010-03-31
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 sd666850 的回复:]

数组没有越界,但是malloc分配得太大了的
[/Quote]
两种情况
1、数组越界
2、malloc 分配太大,失败,得到 NULL —— 在这个情况,应该是第一次赋值(甚至更早之前)就会爆掉了。
请善用 valgrind 查内存错误。
sd666850 2010-03-31
  • 打赏
  • 举报
回复
你说的很对,今天我定位了一下,g_info这个数组是malloc出来的,有点大,我不知道在程序中,我们malloc的最大值是多少呢?
sd666850 2010-03-31
  • 打赏
  • 举报
回复
数组没有越界,但是malloc分配得太大了的
jbz001 2010-03-31
  • 打赏
  • 举报
回复
数组分配了多大???
风子II 2010-03-31
  • 打赏
  • 举报
回复
检查一下g_info的数组大小吧,另外我有点疑惑g_info[i].bool这个变量声明
chen_wenyue 2010-03-31
  • 打赏
  • 举报
回复
for( i=0 ; i < g_Temp ; i++ )
{
g_info[i].bool = true ;
}

dump基本就是由于指针越界,栈溢出之类的引起的,既然你已经知道是这句引起了dump,那么肯定是指针越界引起的,再看你的代码,这个结构数组分配的大小肯定是大于6万小于8万的,你仔细去走查下你对g_info这个结构数组进行内存分配的地方,问题应该出在这里。
蜘蛛上吊 2010-03-31
  • 打赏
  • 举报
回复
g_info[i]这个数组越界了吧
sd666850 2010-03-30
  • 打赏
  • 举报
回复
这个也许才是问题的本质,一时半会看不出来,我仔细研究下,谢了,哥们
jackyjkchen 2010-03-30
  • 打赏
  • 举报
回复
我们瞎猜的话根本猜不出结果……

g_info你分配了多大?看看
sd666850 2010-03-30
  • 打赏
  • 举报
回复
g_Temp的定义看的到,就是无符号32位整形,没越界啊
加载更多回复(1)

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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