void CioDlg::CheckStart(LPVOID lpam)
{
USES_CONVERSION;
if(!OpenPort)
m_com.Open(ComNumber);
CString cmdstart=_T("%EE#RCSR0020");
CString check=m_com.Fcm(cmdstart);
cmdstart=cmdstart+_T(check)+_T("\r");//此句引起泄漏 CString cmdread=_T("%EE#RDD0021200212");
check=m_com.Fcm(cmdread);
cmdread=cmdread+check+_T("\r"); CString cmdclear=_T("%EE#WCSR00200");
check=m_com.Fcm(cmdclear);
cmdclear=cmdclear+check+_T("\r"); CString readrsv;
while (TRUE)
{
if (!flagTesting)
{
g_event=CreateEvent(NULL,TRUE,FALSE,NULL);
if (g_event==NULL)
{
AfxMessageBox(_T("createevent failed")); }
Sleep(200);
SetEvent(g_event);
break;
}
m_com.OnSend(cmdstart);
Sleep(5);
readrsv=m_com.Read();
if (readrsv !=_T(""))
{
int index=readrsv.Find(_T("RC"));
if (index>=0)
{
readrsv=readrsv.Mid(index+2,1);
}
else
{
continue;
}
if ("1" ==readrsv )
{
m_com.OnSend(cmdclear);
Sleep(5);
readrsv=m_com.Read();
if (readrsv.Find(_T("EE$WC"))>=0)
{
if (writePDCA)
{
ReadSN(); if (sn ==_T(""))
{
AfxMessageBox(_T("Please scan SN!"));
continue;
}
}
CString startcs=_T("%EE#WCSR00211");
check=m_com.Fcm(startcs);
startcs=startcs+check+_T("\r"); m_com.OnSend(startcs);
Sleep(5);
readrsv=m_com.Read();
if (readrsv.Find(_T("%EE$WC"))>=0)
{
hThread2=CreateThread(NULL,0,ThreadFun2,this,0,NULL);//开另一个线程
break;
} }
}
}多线程cstring内存泄漏
{
USES_CONVERSION;
if(!OpenPort)
m_com.Open(ComNumber);
CString cmdstart=_T("%EE#RCSR0020");
CString check=m_com.Fcm(cmdstart);
cmdstart=cmdstart+_T(check)+_T("\r");//此句引起泄漏 CString cmdread=_T("%EE#RDD0021200212");
check=m_com.Fcm(cmdread);
cmdread=cmdread+check+_T("\r"); CString cmdclear=_T("%EE#WCSR00200");
check=m_com.Fcm(cmdclear);
cmdclear=cmdclear+check+_T("\r"); CString readrsv;
while (TRUE)
{
if (!flagTesting)
{
g_event=CreateEvent(NULL,TRUE,FALSE,NULL);
if (g_event==NULL)
{
AfxMessageBox(_T("createevent failed")); }
Sleep(200);
SetEvent(g_event);
break;
}
m_com.OnSend(cmdstart);
Sleep(5);
readrsv=m_com.Read();
if (readrsv !=_T(""))
{
int index=readrsv.Find(_T("RC"));
if (index>=0)
{
readrsv=readrsv.Mid(index+2,1);
}
else
{
continue;
}
if ("1" ==readrsv )
{
m_com.OnSend(cmdclear);
Sleep(5);
readrsv=m_com.Read();
if (readrsv.Find(_T("EE$WC"))>=0)
{
if (writePDCA)
{
ReadSN(); if (sn ==_T(""))
{
AfxMessageBox(_T("Please scan SN!"));
continue;
}
}
CString startcs=_T("%EE#WCSR00211");
check=m_com.Fcm(startcs);
startcs=startcs+check+_T("\r"); m_com.OnSend(startcs);
Sleep(5);
readrsv=m_com.Read();
if (readrsv.Find(_T("%EE$WC"))>=0)
{
hThread2=CreateThread(NULL,0,ThreadFun2,this,0,NULL);//开另一个线程
break;
} }
}
}多线程cstring内存泄漏
线程退出也用了信号安全退出了
CString check=m_com.Fcm(cmdstart);
cmdstart=cmdstart+_T(check)+_T("\r");//此句引起泄漏
我把这后两给屏蔽,就给第一条他还是不行,这有问题吧?
Detected memory leaks!
Dumping objects ->
{68} client block at 0x00399140, subtype c0, 64 bytes long.
a CDynLinkLibrary object at $00399140, 64 bytes long
Object dump complete.
“io.exe”: 已加载“C:\WINDOWS\system32\uxtheme.dll”
改完后还有内存泄漏,用上面定位函数找不到奇怪呢?