typedef unsigned int UINT32;
typedef struct
{
UINT32 ucNumber;
string strNumber;
}HSS_SPS_USER_QRY_COND_T;
class CSpsAppThread
{
public:
explicit CSpsAppThread(UINT32 key);
virtual ~CSpsAppThread(){};
CSpsAppThread();
UINT32 m_usPdbaNo;
HSS_SPS_USER_QRY_COND_T m_stQryCond;
}
CSpsAppThread::CSpsAppThread(UINT32 key)
{
....
return;
}
CSpsAppThread::CSpsAppThread()
{
CSpsAppThread(1);
return;
}
CSpsAppThread g_clsSpsApp;
定义g_clsSpsApp对象的时候,生成了两个CSpsAppThread类型的对象,通过CSpsAppThread(1)构造的对象,程序未结束就会进行析构,但是层层析构的时候,修改string strNumber成员的时候,出现了core。调用栈如下:
gdb 调试时p g_clsSpsApp.m_stQryCond.strNumber ,是一个非法的地址,但是p g_clsSpsApp.m_stQryCond.strNumber.c_str()时,是一个空值“”。
请大神们帮忙看下,析构string成员的时候为啥会core呢?