1、 问题的引出
项目中用到数据包的处理,但包的大小是不固定的,其长度由包头的2字节决定。比如如下的包头:88 0f 0a ob cd ef 23 00 。长度由头2个字节880f决定,考虑字节序,转为0f88,转为10进制3976个字节的包长度。
这个时候存储包的时候,一方面可以考虑设定包的大小固定:如4K=4*1024=4096个字节,因为最大包长不可能超过4k,但该方法的有缺陷,存在一种极端就是包最小仅含包头不含数据域,此时包为8个字节,浪费了4096-8 =4088个字节的存储空间。另一方面考虑有没有一种方法能根据长度进行存储,或者说初始不分配长度,计算出了长度后再分配存储呢。而实际项目中正是通过包头计算出了包的整体大小的。
这就引出了变长结构体的概念。
2、 什么叫变长结构体?
如下所示:
struct Var_Len_Struct 继续阅读与本文标签相同的文章
上一篇 :
三个类之间的相互调用实现
下一篇 :
开源代码分析技巧之一——打印调用逻辑
-
如何在618采购你的第一台云服务器
2026-05-24栏目: 教程
-
7.24上海 | 探索云数据库最佳实践 阿里云开发者大会数据库专场邀你一起Code up!
2026-05-24栏目: 教程
-
精彩演绎shell脚本 | 《运维周刊》(02期)
2026-05-24栏目: 教程
-
玩转运维编排服务的权限:Assume Role+Pass Role | 7月10号云栖夜读
2026-05-24栏目: 教程
-
阿里云postgreSQL数据库跨区域逻辑备份
2026-05-24栏目: 教程
