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呢?
uj5u.com熱心網友回復:
資料成員m_usPdbaNo和m_stQryCond是private的,轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/238138.html
標籤:C++ 語言
下一篇:萌新求教
