65,186
社区成员




#include "stdafx.h"
#include <process.h>
class CThreadTest
{
public:
CThreadTest()
{
WaitForSingleObject((HANDLE)_beginthreadex(NULL,0,ThreadFunc,this,0,NULL),INFINITE);
}
~CThreadTest()
{
//位置1
if(m_pUrl)
{
delete m_pUrl;
m_pUrl = NULL;
}
}
char** GetChar(){return &m_pUrl;}
static UINT WINAPI ThreadFunc(PVOID v_pParam)
{
CThreadTest* pTHread = (CThreadTest*)v_pParam;
if(pTHread == NULL)
return 0;
char** pchr = pTHread->GetChar();
*pchr = new char[MAX_PATH];
//位置2
//if(*pchr)
//{
// delete *pchr;
// *pchr = NULL;
//}
return 0;
}
private:
char* m_pUrl;
};
int _tmain(int argc, _TCHAR* argv[])
{
//{
CThreadTest test;
// }
// 包内存溢出
_CrtDumpMemoryLeaks();
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
//{
CThreadTest test;
// }
// 包内存溢出
_CrtDumpMemoryLeaks();
return 0;
}
而你这样写的话,我估计是这个原因,
{
CThreadTest test;
}
// 包内存溢出
这个test对象的生存 期是在{}之内.