打印
[uCOS/RTOS]

这样写代码会不会有问题?

[复制链接]
1218|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lyf9908|  楼主 | 2014-9-24 17:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近看TI BLE原代码时,有如下的人段代码(经整理):

#define OSAL_MSG_NEXT(msg_ptr)   ((osal_msg_hdr_t *) (msg_ptr) -1)->len

typedef struct               
{             
    uint16  len;
    uint8   dest_id;
} osal_msg_hdr_t;        
typedef struct
{
    uint8             state;  // shift
    uint8             keys;   //keys
} keyChange_t;
keyChange_t  * msgPtr
  msgPtr =(keyChange_t *)osal_msg_allocate( sizeof(keyChange_t) ); //此处在内存中分配了一段空间并赋给msgPtr
OSAL_MSG_NEXT( msg_ptr ) = *q_ptr;  
//此处把msg_ptr强制转换成osal_msg_hdr_t类型的指针后减1并给其赋值,如果减1后的地址空间原来有数据的话,哪不是要被破坏了么?
   这样写代码会不会带来问题?  
 

相关帖子

沙发
airwill| | 2014-9-26 09:02 | 只看该作者
所以,现在有很多关于指针的争论,甚至有取消这个数据类型的做法。
但是,指针带来的便利也是不言而喻的。
合理规范地使用指针才是办法。

使用特权

评论回复
板凳
hgjinwei| | 2014-9-26 22:40 | 只看该作者
没看明白,
msg_ptr 从哪来的?不会是“msgPtr” 笔误吧?
如果是,那绝对会出问题,都要修改动态分配的内存前的空间了,内存越界操作,
如果不是,那就不好说了,从源码上看不到问题。

指针给人灵活的另一面,是给人迷糊。

使用特权

评论回复
地板
sdnumcu| | 2014-10-17 10:23 | 只看该作者
指针是个好东西,管他合不合乎道理,能工作就是好代码

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

133

主题

176

帖子

0

粉丝