关于DataType Misalignment的问题!

mastercyl 2005-07-22 09:38:29
串口通讯中,我要把wince的字符串,转换为ANSI的字符串,然后发送:
buf1 = new BYTE(bufLen);
l = bufLen/2;
buf = new BYTE(l);//到这里会出错DataType Misalignment!
for(int i=0;i<l;i++)
buf[i]=buf1[i*2];

问题是:当我发送的字符是一个的时候,无论发多少也不会有问题!
但是,一发的比较多了,就出现DataType Misalignment这个错误了!
是怎么回事啊?
该如何解决!
请高手赐教!

...全文
572 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhata 2006-03-08
  • 打赏
  • 举报
回复
我也出现了这样的问题,和置空好象没有多大的关系.和发送的字符有关系.发同样的程序,发某个特定字符时会出现这样的问题,但其它就不会.奇怪了...........
mastercyl 2005-08-04
  • 打赏
  • 举报
回复
算了,结了
mastercyl 2005-07-25
  • 打赏
  • 举报
回复
我把所有的用到指针变量,完全释放了

还是那个问题!

现在关键问题是:为什么第一次能运行呢?
无聊客 2005-07-23
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4097/4097344.xml?temp=.1007349
无聊客 2005-07-22
  • 打赏
  • 举报
回复
不一定是四字接对齐的问题,以前碰到过类似的问题,产生原因是在释放或者一些变量无效的时候没有置空,导致再次调用时发生错误,有可能会抛出这类异常,楼主查一下你的代码,是不是在一些delete或者Release之后没有把变量置空?
比如:
delete pBuf;
pBuf = NULL; //不把它置空,后面的代码可能就出问题了

if(pBuf)
{
memset(pBuf,....)
......
}
mastercyl 2005-07-22
  • 打赏
  • 举报
回复
看看你的类里有没有不是32位倍数的成员变量,把它弄大到32位?

如何弄大?

偶是新人~~``
mastercyl 2005-07-22
  • 打赏
  • 举报
回复
这个帖子我搜索过,不过,我的两个指针,都是BYTE * buf,* buf1;

跟那个还有点不一样吧??
milozy1983 2005-07-22
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3249/3249951.xml?temp=.9098627
mastercyl 2005-07-22
  • 打赏
  • 举报
回复
问题是:
程序运行第一次是没有错误的;
但第二次运行,就会出现这个错误!
哎!
无聊客 2005-07-22
  • 打赏
  • 举报
回复
以后不会再用的变量释放后不置空也没关系的,会不会是别的代码造成的问题?
mastercyl 2005-07-22
  • 打赏
  • 举报
回复
delete和release以后均已清空!

还是这个问题啊

另外:我的代码:
BYTE * buf=NULL;
BYTE * buf1=NULL;
buf1 = new BYTE(bufLen);
l = bufLen/2;
buf = new BYTE(l);//到这里会出错DataType Misalignment!
for(int i=0;i<l;i++)
buf[i]=buf1[i*2];
.
.
.
delete[] buf;
delete[] buf1;
//buf=NULL:
//buf1=NULL;一开始这两个没加,但是加上以后,还是一样的错误!

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧