class B{
public:
B(const B& b)
{ m_ptr = b.m_ptr; }
void Create()
{ m_ptr = new unsigned char[100];}
void Destroy()
{ delete m_ptr;m_ptr = NULL;}
private:
unsigned char* m_ptr;
};
int _tmain(int argc, _TCHAR* argv[])
{
B b;
b.Create();
B b1(b);
b.Destroy();
b1.xxxx();
return 0;
}
uj5u.com熱心網友回復:
呼叫默認建構式,需要給m_ptr 指標申明空間uj5u.com熱心網友回復:
你需要在無引數建構式中 ,給m_ptr new一個記憶體uj5u.com熱心網友回復:
你在b1構造時,m_ptr指向的區域是由b申請的,b釋放時b1仍然指向那里,所以會出錯,解決方案有兩個:一、在構造b1時重新申請新的記憶體,釋放時再單獨釋放;二、引入一個指標計數器,當計數器大于0時不釋放該記憶體塊,等于0時再釋放轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/163669.html
標籤:C++ 語言
上一篇:鏈表
下一篇:三維離散點插值
