我正在嘗試寫我自己的字符串類(所以我可以瞭解更多),同時這樣做我注意到我遇到了如何刪除char數據的問題當程序關閉字符串的析構函數將被調用,就會出現一堆錯誤的刪除數據爲什麼我在刪除char *時出現內存異常?
#include <string.h>
template<typename T>
class String
{
protected:
T* mData;
public:
String(const T* data);
~String();
};
template<typename T>
String<T>::String(const T* data)
{
if(data != NULL)
{
mData = new T[strlen(data)];
strcpy(mData, data);
}
}
template<typename T>
String<T>::~String()
{
if(mData != NULL)
{
delete [] mData;
mData = 0;
}
}
int main(void)
{
String<char> Test("Test");
return(0);
}
在刪除前不需要測試NULL(或將值設置爲0後)。 – 2011-12-23 19:54:26
你需要遵守三條規則。否則,你會在第一個副本之後崩潰。 – 2011-12-23 19:55:12
你是對的,我違反了三條規則(我想要一個簡單的測試用例) – judeclarke 2011-12-23 20:03:27