更新:對於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)。交換隻是交換指針和長度。 –