免费注册 查看新帖 |

Chinaunix

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

invalid address alignment [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-04 00:42 |只看该作者 |倒序浏览
在写程序时,运行时core了,用dbx调试时:
t@1 (l@1) program terminated by signal BUS (invalid address alignment)
相关代码如下:---请高手指点,谢谢啊!!!!!!!!!

int account_query_request_asssemble(int sd,unsigned int oper_type, Account_Query_Request * sendbuf)
{
        //**head_assemble************
        Account_Query_Request *p=NULL ;
        p= new Account_Query_Request;
        p= sendbuf;
        p->head.oper_type =  oper_type;
        p->head.pack_length= sizeof(Account_Query_Request);
        describe_body(oper_type,&(p->head.record_numb),p->head.descript);
        p->head.pack_date =  gettimestamp();
        p->head.head_length = sizeof(Message_Head);
        //**body_assemble***********

        //**tail_assemble************
        p->tail.tail_length=sizeof(Message_Tail);
        p->tail.tail_field_numb=3;
        describe_tail(&(p->tail.tail_field_descript));

        p->tail.tail_field_data.sum=111;///////dbx 时这里出错
        cout<<"p->tail.tail_field_data.sum="<<p->tail.tail_field_data.sum<<endl;
        p->tail.tail_field_data.trader_id=my_addr(sd);
        p->tail.tail_field_data.check_code=(p->tail.tail_field_data.trader_id + p->head.pack_length)^p->head.pack_date;
        return 0;
}
---
相关结构定义如下

typedef struct
{
        unsigned char field_type;                //Integer(1)       
        unsigned char field_length;                //Integer(1)       
        short int field_descript;                //Integer(2)       
}DESCRIPT;

typedef struct
{
        unsigned int trader_id;                //Integer(4)       
        unsigned int check_code;        //Integer(4)       
        int sum;                                        //*Integer(4)       

}TAIL_DATA;


typedef struct
{
        short int oper_type;            // Integer(2)   
        unsigned int pack_length;//Integer(4)   
        unsigned int pack_date; //Integer(4)
        short int head_length;//Integer(2)
        short int record_numb;//Integer(2)
        DESCRIPT  descript[MAX_DESCRIP_NUM];//Varchar
} Message_Head;

/*Message Tail*/
typedef struct
{
        short int tail_length;                  //Integer(2)   
        short int tail_field_numb;              //Integer(2)   
        DESCRIPT tail_field_descript;//Varchar .
        TAIL_DATA tail_field_data;     //Varchar  
}Message_Tail;

/*Message Body*/

typedef struct
{
        Message_Head  head;
        unsigned int  trader_serial;        //Integer(4)       
        char contract_id[20];        //Char(20)       
        //int  account_balance;//Integer(4)       
        char  business_addrnum97[4];//Char(4)  
        char   operator_id97[6];//        Char[6]
        Message_Tail  tail;
}Account_Query_Request;

论坛徽章:
0
2 [报告]
发表于 2008-01-04 00:44 |只看该作者

invalid address alignment

dbx时提示:
t@1 (l@1) program terminated by signal BUS (invalid address alignment)
Current function is account_query_request_asssemble
1133           p->tail.tail_field_data.sum=111;-----程序的这里出错

论坛徽章:
0
3 [报告]
发表于 2008-01-04 08:58 |只看该作者
p= new Account_Query_Request;
p= sendbuf;

这是什么意思

论坛徽章:
0
4 [报告]
发表于 2008-01-04 10:26 |只看该作者
p= new Account_Query_Request; 这句是注释的
就那句
Account_Query_Request *p=NULL ;
p= sendbuf;

论坛徽章:
0
5 [报告]
发表于 2008-01-04 14:48 |只看该作者
没人知道吗?
高手呢?

论坛徽章:
0
6 [报告]
发表于 2008-01-04 22:17 |只看该作者
高手帮我分析下啊,拜托啊

论坛徽章:
0
7 [报告]
发表于 2008-01-05 20:28 |只看该作者
谁帮我分析啊,斑竹呢/

论坛徽章:
0
8 [报告]
发表于 2008-01-05 20:47 |只看该作者
p->tail.tail_field_data.sum
看看这个的地址

PS: 数据结构设计的很可怕...

论坛徽章:
0
9 [报告]
发表于 2008-01-05 21:51 |只看该作者
这个嵌套的结构提是比较多了点
用dbx调试时
assign p->tail.tail_field_data.sum=111
是可以的,也有地址,
但是在程序里赋值就不行,不知道哪里的问题,请高手指点啊

论坛徽章:
0
10 [报告]
发表于 2008-01-05 21:53 |只看该作者
比较怪异的是,同一份程序在hp 的机器上是可以用,现在换了机器,要移植到sun的机器上,编译都通过了,一运行就core了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP