2 つの char[] を新しい配列にマージする簡単なコードがあります。問題は、新しい配列を作成したときに、コンストラクターで割り当てられた元の char 配列を削除したいことです。このメモリで削除を呼び出さないと、m_str を再割り当てすると、メモリ リークが発生します。
-編集 delete を呼び出すとエラーが発生するのはなぜですか?
String() { m_str = new char[1]; *m_str = 0; }
String& String::operator+= (const String& other)
{
unsigned int tmpInt1, tmpInt2;
tmpInt1 = myStrlen(this->m_str);
tmpInt2 = myStrlen(other.m_str);
// Allocate the new char array, make an extra space for the '\0'
char* newChar = new char[tmpInt1 + tmpInt2 + 1];
myStrcat(newChar, this->m_str, tmpInt1, 0);
myStrcat(newChar, other.m_str, tmpInt2, tmpInt1);
this->m_str[myStrlen(m_str)] = '\0';
delete[] this->m_str;
this->m_str = newChar;
return *this;
}