jud*_*rke 2 c++ memory string algorithm memory-management
我正在尝试编写自己的字符串类(所以我可以学到更多),同时这样做我注意到我遇到了如何删除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);
}
Run Code Online (Sandbox Code Playgroud)
mData = new T[strlen(data)];
strcpy(mData, data);
Run Code Online (Sandbox Code Playgroud)
您分配的项目太少,strcpy复制nul终止字节以及字符串