我有一些简单的代码将两个 char[] 合并到一个新数组中。问题是,当我创建新数组时,我想删除在构造函数中分配的原始 char 数组。如果我不在此内存上调用 delete,那么一旦我重新分配 m_str,就会发生内存泄漏。
-Edit 为什么我在调用 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;
}