更新:对于STR1的新数据分配的内存。仍然是内存错误。重写+ =操作员C++
我试图改写为我创建了一个字符串类+ =方法。
Class mystring{
public:
friend void operator+=(mystring& str1, const mystring& str2){
mystring temp;
delete[] temp.data;
temp.length = str1.length + str2.length;
temp.data = new char[temp.length + 1];
strcpy(temp.data, str1.data);
strcat(temp.data, str2.data);
delete[] str1.data;
str1.length = temp.length;
strcpy(str1.data, temp.data);
}
private:
char *data;
int length;
}
然后在主类:
mystring str1("hi");
mystring str2("matt");
str1 += str2;
cout << str1 << endl;
此功能工作,因为它应该的,但我得到的内存错误,当我运行的valgrind全部结束。我无法弄清楚为什么。如果有人可以给我任何提示,这将是非常棒的。
感谢
你为什么要重新发明轮子呢? – SLaks
请将相关错误显示在valgrind中以及您的构造函数代码中。 – Arunmu
请注意,您应该定义一个交换方法。你应该有一个特殊的mystring构造函数,所以你不必先删除temp.data。你应该使用memcpy,因为你知道长度:strcpy和cat是浪费的。使用temp之后的交换方法,您可以交换新的字符串(* this,temp)。交换只是交换指针和长度。 –