定义一个类CTFile,有一个成员变量m_app,当然还有一个列表。类中有一个私有的方法Send_Check_Pack_Resp
程序在执行到该段函数时,报内存错误,调试时发现m_app居然未定义,当然那个列表也一样。
CTFile::Send_Check_Pack_Resp()...
len += DWORD_LENGTH;
memcpy(sendbuf + len,(char *)&Repack.error_code,DWORD_LENGTH); len += DWORD_LENGTH;
memcpy(sendbuf + len,(char *)&Repack.file_id,DWORD_LENGTH); len += DWORD_LENGTH;
memcpy(sendbuf + len,Repack.lostset,LOSTFILESET);     //程序调试到这里时,m_app有效的,还可以看到虚函数列表,接下来就不行了 this->m_app->SetInformation("Send_Check_File_Resp");
m_app->SetInformation("检测CTRWINDOW");
for(std::vector<CTRWindow>::iterator pos = m_lTRWindow.begin() ; 
pos != m_lTRWindow.end(); pos ++)
{}
...早上写的时候一切正常,后来就不知道为什么这样了,相当郁闷。不晓得是什么问题,有心人帮我想想,谢谢!

解决方案 »

  1.   

    有没有可能是memcpy(sendbuf + len,Repack.lostset,LOSTFILESET); 这句越界了?
      

  2.   


    memcpy(sendbuf + len,Repack.lostset,LOSTFILESET);     //程序调试到这里时,m_app有效的,还可以看到虚函数列表,接下来就不行了 不会就是这句造成了缓存区溢出吧?
      

  3.   

    内存越界不太可能,因为这里的BUFF大小我专门设过的,即便错误,也该是那一句。我还是重建下工程试试
      

  4.   

    memcpy(sendbuf + len,Repack.lostset,LOSTFILESET);
    既然你都知道是这行执行后出问题了,很显然是这里越界了,看一下sendbuf和len是怎么定义的,执行到这行的时候各个参数的值分别是多少,自然就知道问题了。