@Qnikj

Как избавиться от утечки памяти?

В одном из методов класса string надо вернуть экземпляр данного класса

BasicString substr(size_t idx) {
		BasicString newStr = new BasicString;
		for (size_t i = idx; i < size(); i++)
			newStr.push_back(mData[i]);
		return newStr;
	}


при вызове метода происходит следующее
BasicString str = "qwerty";
	str = str.substr(2);


оператор = перегружен следующим образом
BasicString operator= (const BasicString other) {
		this->clear();
		for (size_t i = 0; i < other.size(); i++) {
			push_back(other[i]);
		}
		return this;
	}

то есть получается что я выделяю память под newStr, но мне негде ее освободить и получаю утечку, как от нее избавиться?
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
Adamos
@Adamos
По-сишному - переложить ответственность за удаление этой переменной на того, кто ее получает.
По-крестовому - использовать умные указатели, например.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы