luxiao013
驱动牛犊
驱动牛犊
  • 注册日期2005-05-13
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1943回复:6

arm处理器,evc中delete []buf时出现datatype misalignment错误

楼主#
更多 发布于:2005-05-13 18:02
  在evc下基于串口开发了一个通信程序,将用户输入的信息通过串口发送出去,当用户输入的字符为奇数个时,发送完成后delete []buf会出现datatype misalignment错误,如果输入偶数个时,则不会出现这种情况。
申请空间时
  int bufLen = m_strSend.GetLength()*2;
  BYTE * buf;
  buf = new BYTE(bufLen);
删除时
  delete []buf;
  我知道这有可能是arm4字节对齐的问题,但是我不知道有没有好的方法解决这个问题。
luxiao013
驱动牛犊
驱动牛犊
  • 注册日期2005-05-13
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-14 08:38
这里面不是人气很高吗?
怎么没人回复阿
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-16 11:01
有可能是必须4字节对齐。

你可以无论奇偶都申请偶数的缓冲区,如果有多余就补ascii码0。
根据地的兄弟们,团结就是力量
luxiao013
驱动牛犊
驱动牛犊
  • 注册日期2005-05-13
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-16 11:26
这样补齐数据也行,不过发送的数据又可能涉及到协议,单片机接受后会出现协议错误的情况阿
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-05-16 13:07
你可以自己增加长度字段来配合提取有用数据
根据地的兄弟们,团结就是力量
luxiao013
驱动牛犊
驱动牛犊
  • 注册日期2005-05-13
  • 最后登录2005-05-27
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-05-16 14:26
这也是,不过这硬件上面的协议一变,pc软件也要改,我是想做成pc和手持设备通用的一套系统,pc软件现在已经做好,改起来有点麻烦了。 呵呵 怎么说都要谢谢wxl_50685330大哥了。
wxl_50685330
论坛版主
论坛版主
  • 注册日期2002-11-19
  • 最后登录2018-09-25
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望521点
  • 贡献值0点
  • 好评度419点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-05-16 15:05
你也可以把你的改动局限在目标版这一侧。加长度字段只为了驱动解读需要发送的数据长度,送给驱动的缓冲区保证4字节对齐,驱动根据长度字段发送其数据,这个操作可以对pc端透明
根据地的兄弟们,团结就是力量
游客

返回顶部