免费注册 查看新帖 |

Chinaunix

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

AIX空指针问题求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-07 16:45 |只看该作者 |倒序浏览
本帖最后由 seyjs 于 2012-04-07 18:06 编辑

AIX平台下空指针问题

[AIX]$cat NullPoint.cpp
#include<stdio.h>
class TIbHubbingDestinationData
{
public:
    long long lDestinationId;
    char sFmFlag[1+1];
    TIbHubbingDestinationData() {}
    TIbHubbingDestinationData(const char *sCalledNbr) {}
    TIbHubbingDestinationData(const char *sCalledNbr, const char* sFmflag, bool bIsRateIn, long long llServiceId);  
    virtual int Compare() const;
    virtual TIbHubbingDestinationData *Clone() const;
};

int main()
{
        TIbHubbingDestinationData *p = NULL;
        printf("fmflag:%s\n",p->sFmFlag);
        printf("des_id:%lld\n",p->lDestinationId);
        return 0;
}
[AIX]$xlC -g -qcheck=all -c NullPoint.cpp
[AIX]$xlC -o NullPoint NullPoint.o
[AIX]$NullPoint
fmflag:
Trace/BPT trap(coredump)
[AIX]$不清楚为什么整型会core,而字符串型可以正常运行

论坛徽章:
0
2 [报告]
发表于 2012-04-07 20:04 |只看该作者
注意,你定义了一个类,然后再main函数中去定义该类的指针,而该指针指向的是一个随机地址,换句话说,你并没有实例化你的类。
那么当你去使用该指针时,肯定会出问题,字符串不报错并不代表该程序段写的没有问题。

论坛徽章:
0
3 [报告]
发表于 2012-04-07 20:22 |只看该作者
这个是野指针。

论坛徽章:
0
4 [报告]
发表于 2012-04-07 20:39 |只看该作者
回复 2# cj_gameboy_cu

对的,确实是有问题。但是,弄不懂为什么AIX是这样的机制,整型异常,而字符串是正常


   

论坛徽章:
0
5 [报告]
发表于 2012-04-07 22:06 |只看该作者
seyjs 发表于 2012-04-07 20:39
回复 2# cj_gameboy_cu

对的,确实是有问题。但是,弄不懂为什么AIX是这样的机制,整型异常,而字符串是 ...


或者是巧合而己,我曾经碰到过声明一个a[7][3]的数组,用a[7][3]这样的下标访问不出错的。

不管怎样,反正是错的,就算结果是可接受的,也是错的。

论坛徽章:
0
6 [报告]
发表于 2012-04-09 09:23 |只看该作者
如果使用了野指针,之后所有使用该指针的操作的结果都是不可预知的。
就好比你去超市存包,打开两个柜子,发现一个柜子是空的而另外一个有垃圾,于是你就认为空柜子就是有问题而有垃圾才是正常的。有垃圾只能说明之前有人用过。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP