64,670
社区成员
发帖
与我相关
我的任务
分享
void CIPCConnection::OnReceived( const char *pData, DWORD nLen )
{
vector<string> vecParam;
string strMessage;
string strSection;
int iTemp;
m_strMessageBuf.resize(m_strMessageBuf.size() + nLen);
// 从VC6转到VS2003的时候发现 const_cast<char *>(m_strMessageBuf.end()) 这样写不能通过编译!所以在下面加了&*
char *p = const_cast<char *>(&*m_strMessageBuf.end()) - nLen; // 有一次崩溃我选择调试,查看堆栈发现出错点在这里!
memcpy(p, pData, nLen);
while ((iTemp = m_strMessageBuf.find_first_of('\0')) != string::npos)
{
pData = m_strMessageBuf.data();
for (int i=0; i<iTemp; i++)
{
if (pData[i] == '|')
{
vecParam.push_back(strSection);
strSection = "";
}
else
strSection += pData[i];
}
if (!strSection.empty())
{
vecParam.push_back(strSection);
strSection = "";
}
if (vecParam.size())
{
strMessage = vecParam.front();
vecParam.erase(vecParam.begin());
}
CIPCServer *pIPCServer = dynamic_cast<CIPCServer *>(m_pParent);
if (pIPCServer)
{
pIPCServer->OnMessage(this, strMessage, vecParam);
}
vecParam.clear();
m_strMessageBuf.erase(0, iTemp + 1);
}
}
m_strMessageBuf.insert(m_strMessageBuf.size(), pData, nLen);
char *p = const_cast<char *>(&*m_strMessageBuf.end()) - nLen; // 有一次崩溃我选择调试,查看堆栈发现出错点在这里!
memcpy(p, pData, nLen);
string strMessage;
string strSection;
int iTemp;
m_strMessageBuf.resize(m_strMessageBuf.size() + nLen);
char *p = const_cast<char *>(&*m_strMessageBuf.end()) - nLen;
00434500 test eax,eax
00434502 jne CIPCConnection::OnReceived+0BAh (43450Ah)
00434504 call dword ptr [__imp___invalid_parameter_noinfo (466404h)]
0043450A mov ecx,dword ptr [edi]
0043450C call dword ptr [__imp_std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Myptr (4661C8h)]
00434512 mov ecx,dword ptr [edi]
00434514 add eax,dword ptr [ecx+14h]
00434517 cmp dword ptr [edi+4],eax
0043451A jb CIPCConnection::OnReceived+0D2h (434522h)
0043451C call dword ptr [__imp___invalid_parameter_noinfo (466404h)]
00434522 mov eax,dword ptr [edi+4]
memcpy(p, pData, nLen);
00434525 push esi
00434526 sub eax,esi
00434528 push ebp
00434529 push eax
0043452A call memcpy (455A96h)
0043452F add esp,0Ch