Padding也要小心
来源:互联网 发布:作息时间表软件 编辑:程序博客网 时间:2024/04/29 04:08
Padding也要小心
为了在32位机器和64位机器之间传递状态消息,我们给消息格式做了padding:
struct StateMsg
{
uint32_t msgType;
uint32_t padding;
uint64_t msgID;
};
这样,不管是在32位机器上还是64位机器上,消息的大小都是16个字节。开始一切正常,直到后来我们发现有问题:程序里会比较本条状态消息与上一条有什么不同,如果不一样,要清空路由表;如果一样,就说明状态没有变化,于是不做任何操作。而错误出现在我们的消息比较用的是memcmp:
memcmp(oldMsg, newMsg, sizeof(struct StateMsg));
这下连padding也加入比较了,但是padding我们却没有对它赋初值!结果,每条消息都和上一条不同,路由表于是被频繁的清空….
padding本身是用来对齐的,对业务没有任何意义,所以赋值的时候容易忘掉它。教训啊
- Padding也要小心
- 经过斑马线也要小心
- 从网站下载软件也要小心
- 使用CComPtr也要小心了
- 测试也要仔细和小心,对于删除复制一些想法
- 不登陆后台也可以拿到shell,ewebeditor漏洞要小心
- 停止Java线程,弃用stop()方法, 也要小心interrupt()方法
- 移动支付“车水码龙”,但也小心“塞翁失码”
- padding
- Padding
- padding
- padding
- 小心!QQ和MSN聊天记录也会随时被监控
- 小心,Mac OS也有类似万能密码!
- 小心,Mac OS也有类似万能密码!
- 记得要小心
- strlen使用要小心
- 使用memset要小心
- linux后端服务程序之信号处理
- Android ListView
- linux下获得时间差,精确到微秒级别
- DDD调试opencore/stagefright
- Flex读取XML文件的两种方法
- Padding也要小心
- linux异步IO编程实例分析
- 数据结构试验-试验8-huffman树、huffman编码
- 使用mysql mysqldump进行数据库迁移
- 再理解下ROC曲线和PR曲线
- 算法总结
- 单个实例应用程序(C#)
- Android源码分析:StageFright多媒体框架
- Linux 网络优势所在