从下面函数以外的一个文件中调用该函数,怎么会出现内存之类的错误?
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);
}
大家知道是什么原因吗?该如何解决??

解决方案 »

  1.   

    控件你创建了吗?
    如果动态创建,就要调用Create函数,如果是在通过资源的方法创建,那么也要看调用位置,要保存调用的时候,控件已创建。
      

  2.   

    "0x5f4392f3"指令引用的"0x000000ec"内存.该内存不能为"read".
    要终止程序,请单击"确定".
    要高度程序,请单击"取消".
      

  3.   

    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);  

    在该函数同一文件内的地方调用该函数没有问题的,在别的文件内调用SendData( data)就跳出上面那错误...
      

  4.   

    看看堆栈信息,往后退到程序代码处
    怀疑String2Hex处有问题,可以把这一段替换成已知量
    CByteArray m_Array;
    m_Array.RemoveAll();
    for(BYTE i='a';i<='z';i++)
      m_Array.Add(i);
      

  5.   

    String2Hex处应该没有问题,我设断点过,是
    m_comport.SetOutput(COleVariant(m_Array));  
    m_comport.SetOutBufferCount(0); 
    这两语句产生错误...拿掉这两句就没错误的!
      

  6.   

    m_comport.SetOutBufferCount(0);  把这句去掉看看
      

  7.   

    去掉m_comport.SetOutBufferCount(0);  这句还是错误啊!~