David的测试技术空间,收藏好文档和分享我的技术理解。5年的数通产品测试和安全产品测试经验,3年Web产品测试和多年测试管理和测试工具开发经验。目前关注性能分析调优、Jmeter和TestNG+WebDriver+Hamcrest的培训推广。Welcome沟通交流,请留言或者发邮件到daviwang_2004 at soguo.com。
C中的指针强制转换问题
上一篇 /
下一篇 2007-11-26 10:20:11
http://topic.csdn.net/t/20061110/16/5148811.html
从CSDN上找到的资料,解决了我很久以来的一个疑问
问题源:
C++的这种风格的代码是什么意思?是指针的强制类型转换吗?
有什么好处?会不会有什么风险?
Subscrīption *subscrīption = (Subscrīption *) event->data_;
3 楼taodm((不能收CSDN社区短信息,请莫浪费精力))回复于 2006-11-10 16:16:15 得分 30
是指针的强制类型转换。
危险是:你必须明确知道data_里放的数据确实是Subscrīption类型的。
好处?没好处,是迫不得已。当你从消息队列或者socket收数据时,收到的都是无类型的一堆2进制字节流,你只能进行强制类型转换,然后才能操作它
7 楼goodluckyxl(被人遗忘的狗)回复于 2006-11-10 16:23:56 得分 30
C++的这种风格的代码是什么意思?是指针的强制类型转换吗?
有什么好处?会不会有什么风险?
没什么意思,这个只是沿用c语言得强转路线
是指针得强转
好处就是在内存分布一致得情况下,直接强转可以得到正确得成员数据
会有风险,如果说这个结构存在复杂内存分布,不一定以成员作为第一偏移得话
就转出错误数据
22 楼flyingbug(Effective Refactoring)回复于 2006-11-10 17:35:04 得分 0
刚才看了c的内存布局和内存对齐问题,据那上面的说法,c标准并没有规定struct在内存中是否是连续分布的,但是规定了声明顺序等同于内存中的顺序,不同的平台上对齐的标准也不一样
那么,我们用socket传送对象或结构的时候,将一个对象转换成字符流,究竟改遵循什么原则呢?把各个成员按照声明顺序转成char数组然后拼在一起?
收藏
举报
TAG: