结构segfault的结构
struct of struct segfault
我试图为数据包创建一个结构,并在其中放入ip_header和udp_header,但当它到达代码的那一部分时,它会出错。我在这个问题上纠结了很长一段时间,被难住了。
/* IP header struct */
struct ip_header{
unsigned char iph_ihl:5, iph_ver:4;
unsigned char iph_tos;
unsigned short int iph_len;
unsigned short int iph_ident;
unsigned char iph_flag;
unsigned short int iph_offset;
unsigned char iph_ttl;
unsigned char iph_protocol;
unsigned short int iph_chksum;
unsigned int iph_sourceip;
unsigned int iph_destip;
};
/*UDP header struct */
struct udp_header{
unsigned short int udph_srcport;
unsigned short int udph_destport;
unsigned short int udph_len;
unsigned short int udph_chksum;
};
/* Packet struct */
struct packet{
ip_header ip_hdr;
udp_header udp_hdr;
string buffer;
};
int main( int argc, char **argv )
{
string ip_line;
string message_line;
get_input( ip_line, message_line );
ip_header i = create_ip_header( address, ip_line );
udp_header u = create_udp_header();
cout << "IP lent" << i.iph_len << endl;
cout << "UDP lent" << u.udph_len << endl;
packet *pkt = ( struct packet* )(i.iph_len + u.udph_len + sizeof( message_line ));
//SEGFAULTS HERE
pkt->ip_hdr = i;
pkt->udp_hdr = u;
pkt->buffer = message_line;
此行错误:
packet *pkt = ( struct packet* )(i.iph_len + u.udph_len + sizeof( message_line ));
你不能将指针设置为一组长度和大小的总和,它需要指向一个分配的对象。应该是:
packet *pkt = new packet;
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 孤立代码块在结构中引发异常
- 有什么方法可以遍历结构吗
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 无法将结构注册为增强几何体3D点
- 多成员Constexpr结构初始化
- C++中带有List类的迭代器Segfault
- C++将文本文件中的数据读取到结构数组中
- 如何重构类层次结构以避免菱形问题
- 如何在C++中序列化结构数据
- std::vector的包装器,使数组的结构看起来像结构的数组
- 没有为自己的结构调用列表推回方法
- 结构segfault的结构
- 调用结构的虚函数时出现segfault
- 将char数组强制转换为结构时出现Segfault