memcpy、静态变量和MSCOMM控件用在同一函数中,不知谁的原因,出错!
程序如下:
if (2 == m_DataPort.GetCommEvent())
{
static VARIANT Rec_Data = m_DataPort.GetInput();
int Data_Len = Rec_Data.parray->rgsabound->cElements;
memcpy(CommDataBuff, Rec_Data.parray->pvData, Data_Len);
}
其中m_DataPort为MSCOMM控件在包装类,我在MFC下使用。
注,我肯定不是CommDataBuff数组太小的问题,因为它其实很大,而且我只向串口送了几个字节的数据而已。
错误就是读0地址错误,一点调试就跳到memcpy.asm这个文件,里面是memcpy和memove函数的实现代码(汇编)。
我将static VARIANT Rec_Data = m_DataPort.GetInput();
改为VARIANT Rec_Data = m_DataPort.GetInput();
错误没了,但我仍然无法断定就是静态变量的问题,因为有可能是MSCOMM控件无法向静态变量里写值。