免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 8415 | 回复: 22
打印 上一主题 下一主题

请大家帮我看看,为什么有的变量加上static关键字就core dump [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-04 11:36 |只看该作者 |倒序浏览
5可用积分
大家好,我现在遇到一个比较棘手的问题,我的程序一个头文件定义了变量

a.h
static int tmptsta_index[NATIONAL_STA_NUM];
static int tmptsta5n_startpos[10];


b.c
#include <a.h>
程序中有:
tmptsta5n_startpos[j] = i


说明:整体程序中有很多static 变量,而且变量占用空间都很大,可是别的地方用static都没有core dump,只有在我的程序中我有几个变量加上static 就core dump, 我去掉就好了。

比如,这样就没问题了:
a.h
int tmptsta_index[NATIONAL_STA_NUM];
int tmptsta5n_startpos[10];


b.c
#include <a.h>
程序中有:
tmptsta5n_startpos[j] = i

谁能给我解释一下。谢谢了!

论坛徽章:
0
2 [报告]
发表于 2010-06-04 13:35 |只看该作者
建议不要在h文件里定义变量
单看你给出的代码,貌似没问题, 查查数组是不是越界了,就是说看看j>=10?

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
3 [报告]
发表于 2010-06-04 13:44 |只看该作者
加了static的会被初始化为0,看看你的代码会不会是这个原因

论坛徽章:
0
4 [报告]
发表于 2010-06-04 13:54 |只看该作者
core dump到什么地方了?就是这两个变量上吗?

论坛徽章:
0
5 [报告]
发表于 2010-06-04 14:11 |只看该作者
数组没有越界, 就是到赋值那行core dump了。

论坛徽章:
0
6 [报告]
发表于 2010-06-04 14:14 |只看该作者
信息太少

论坛徽章:
1
申猴
日期:2014-02-11 14:50:31
7 [报告]
发表于 2010-06-04 14:23 |只看该作者
加了static的会被初始化为0,看看你的代码会不会是这个原因
hellioncu 发表于 2010-06-04 13:44



    不是static的全局变量都会初始化

另外,lz的这个例子里面的static修饰变量看不出有什么用

论坛徽章:
0
8 [报告]
发表于 2010-06-04 16:11 |只看该作者
回复 5# stronggirl


    赋值前,你看看数组对应项是什么状态?

论坛徽章:
0
9 [报告]
发表于 2010-06-04 16:12 |只看该作者
回复 1# stronggirl


    猛然看见你的ID:stronggirl, 强!

论坛徽章:
0
10 [报告]
发表于 2010-06-04 16:35 |只看该作者
在头文件中定义static xx[],等于在每个引用了该头文件的C文件中都定义了一个static xx[]
而且你也说了变量占用空间都很大, 很可能操作系统没有足够的内存空间分配而造成了core dump
看我昨天的一个帖子, 也是讨论分配很大数据空间, 如何判定分配是否成功的问题:
http://bbs2.chinaunix.net/thread-1715241-1-1.html
malloc还可以通过判断返回NULL指针, 获取申请分配结果是否成功, static int a[9999999999999]这样的申请则完全没有办法知道是否获取成功.


按照惯例,头文件不定义如何变量,只负责声明。
你把头文件定义的static变量放在C文件中,看看是否还是会出core dump。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP