我正在尝试写我自己的字符串类(所以我可以了解更多),同时这样做我注意到我遇到了如何删除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