阅读:1943回复:6
arm处理器,evc中delete []buf时出现datatype misalignment错误
在evc下基于串口开发了一个通信程序,将用户输入的信息通过串口发送出去,当用户输入的字符为奇数个时,发送完成后delete []buf会出现datatype misalignment错误,如果输入偶数个时,则不会出现这种情况。
申请空间时 int bufLen = m_strSend.GetLength()*2; BYTE * buf; buf = new BYTE(bufLen); 删除时 delete []buf; 我知道这有可能是arm4字节对齐的问题,但是我不知道有没有好的方法解决这个问题。 |
|
沙发#
发布于:2005-05-14 08:38
这里面不是人气很高吗?
怎么没人回复阿 |
|
论坛版主
|
板凳#
发布于:2005-05-16 11:01
有可能是必须4字节对齐。
你可以无论奇偶都申请偶数的缓冲区,如果有多余就补ascii码0。 |
|
地板#
发布于:2005-05-16 11:26
这样补齐数据也行,不过发送的数据又可能涉及到协议,单片机接受后会出现协议错误的情况阿
|
|
论坛版主
|
地下室#
发布于:2005-05-16 13:07
你可以自己增加长度字段来配合提取有用数据
|
|
5楼#
发布于:2005-05-16 14:26
这也是,不过这硬件上面的协议一变,pc软件也要改,我是想做成pc和手持设备通用的一套系统,pc软件现在已经做好,改起来有点麻烦了。 呵呵 怎么说都要谢谢wxl_50685330大哥了。
|
|
论坛版主
|
6楼#
发布于:2005-05-16 15:05
你也可以把你的改动局限在目标版这一侧。加长度字段只为了驱动解读需要发送的数据长度,送给驱动的缓冲区保证4字节对齐,驱动根据长度字段发送其数据,这个操作可以对pc端透明
|
|