从下面函数以外的一个文件中调用该函数,怎么会出现内存之类的错误?
void CRemoteMSDlg::SendData(CString data)
{
int len;
CString m_Ascii;
m_Ascii=data;
CByteArray m_Array;
len=String2Hex(m_Ascii,m_Array);
m_comport.SetOutput(COleVariant(m_Array));
m_comport.SetOutBufferCount(0);
}
在该函数中设断点则进了了下面的函数中
void AFX_CDECL CWnd::InvokeHelper(DISPID dwDispID, WORD wFlags, VARTYPE vtRet,
void* pvRet, const BYTE* pbParamInfo, ...)
{
ASSERT(m_pCtrlSite != NULL); // not an OLE control (not yet, at least) if (m_pCtrlSite == NULL)
return; va_list argList;
va_start(argList, pbParamInfo);
m_pCtrlSite->InvokeHelperV(dwDispID, wFlags, vtRet, pvRet, pbParamInfo,
argList);
va_end(argList);
}
大家知道是什么原因吗?该如何解决??
void CRemoteMSDlg::SendData(CString data)
{
int len;
CString m_Ascii;
m_Ascii=data;
CByteArray m_Array;
len=String2Hex(m_Ascii,m_Array);
m_comport.SetOutput(COleVariant(m_Array));
m_comport.SetOutBufferCount(0);
}
在该函数中设断点则进了了下面的函数中
void AFX_CDECL CWnd::InvokeHelper(DISPID dwDispID, WORD wFlags, VARTYPE vtRet,
void* pvRet, const BYTE* pbParamInfo, ...)
{
ASSERT(m_pCtrlSite != NULL); // not an OLE control (not yet, at least) if (m_pCtrlSite == NULL)
return; va_list argList;
va_start(argList, pbParamInfo);
m_pCtrlSite->InvokeHelperV(dwDispID, wFlags, vtRet, pvRet, pbParamInfo,
argList);
va_end(argList);
}
大家知道是什么原因吗?该如何解决??
如果动态创建,就要调用Create函数,如果是在通过资源的方法创建,那么也要看调用位置,要保存调用的时候,控件已创建。
要终止程序,请单击"确定".
要高度程序,请单击"取消".
{
int len;
CString m_Ascii;
m_Ascii=data;
CByteArray m_Array;
len=String2Hex(m_Ascii,m_Array);
m_comport.SetOutput(COleVariant(m_Array));
m_comport.SetOutBufferCount(0);
}
在该函数同一文件内的地方调用该函数没有问题的,在别的文件内调用SendData( data)就跳出上面那错误...
怀疑String2Hex处有问题,可以把这一段替换成已知量
CByteArray m_Array;
m_Array.RemoveAll();
for(BYTE i='a';i<='z';i++)
m_Array.Add(i);
m_comport.SetOutput(COleVariant(m_Array));
m_comport.SetOutBufferCount(0);
这两语句产生错误...拿掉这两句就没错误的!