- 论坛徽章:
- 0
|
在写程序时,运行时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; |
|