我已經實現了一個智能指針類,當我試圖編譯時,它停在一個特定的行上,我得到這個消息:未處理的異常在test.exe中0x00418c38:0xC0000005:訪問衝突讀取位置0xfffffffc。在test.exe 0x00418c38未處理的異常:0xC0000005:訪問衝突讀取位置0xfffffffc
我的代碼是:
template <class T>
class SmartPointer
{
private:
T* ptr;
int* mone;
public:
SmartPointer() : ptr(0), mone(0) //default constructor
{
int* mone = new int (1);
}
SmartPointer(T* ptr2) : ptr(ptr2), mone(0)
{
int* mone = new int (1);
}
SmartPointer<T>& operator= (const SmartPointer& second) //assignment operator
{
if (this!= &second)
{
if (*mone==1)
{
delete ptr;
delete mone;
}
ptr = second.ptr;
mone = second.mone;
*mone++;
}
return *this;
}
~SmartPointer() // Destructor
{
*mone--;
if (*mone==0)
{
delete ptr;
delete mone;
}
}
};
我也有一個*和&重載函數和拷貝構造函數。
它停止在這裏:
if (*mone==0)
請你幫我嗎? thaks
請編譯所有警告和調試信息([GCC](http://gcc.gnu.org/)表示'g ++ -Wall -g')。然後使用你的調試器(Linux系統上的'gdb')。另外,使用STL智能指針。 –