CByteArray 使用时小经验分享,该如何解决

CByteArray 使用时小经验分享
应用平台VS2008,系统:WIN7 家庭版。
出现问题:以下代码段
CByteArray m_arraySend;
int tempData;
BYTE tempBD;
tempData =m_slidMotor1.GetPos();
m_arraySend[8]=0xff&tempData;
tempBD = (tempData>>8)&0xff; // 对于中间变量 ,可以进行需要的操作的。如右移,但m_array变量不可。不知为何。
m_arraySend.SetAt(9,tempBD);

以上主要用于一个串口通信发送一个16位数,运行时会报以下错误,XX.exe已经触发了一个断点。程序的中断位置为dbgrptt.c的如下位置
_CRTIMP void _cdecl _CrtDbgBreak(
    void
    )
{
    DebugBreak();
}// stops here;

问题原因不明。如果注释掉  // m_arraySend.SetAt(9,tempBD); 程序可以正常使用。
或如下修改: m_arraySend[8]=0xff&tempData;为
m_arraySend[8]=(UINT8)(0xff&tempData);
程序可通过。

原因:通过不断尝试得到的经验,具体成因不详,仅作为一个问题的解决小技巧来分享。有知道原因的愿意补充,请留言。非常欢迎。


------解决方案--------------------
这个array和std的vector类似的吧   你都没分配空间 哪来的  m_arraySend[8]? 你先调用insert类似的操作

先放入9个 再执行m__arraySend[8]=0xff&tempData; 应该就可以  或者像vector似的预先分配一定的空间

自己查下CByteArray的用法先吧...
------解决方案--------------------
造成程序死机,你可以暂停程序,看程序运行到哪了,可能你的上位机软件对接收到的数据处理有问题。我也遇到过,通过串口接收到乱码的处理中,进入了死循环。