basic_string.h中erase删除 [first, last) 的元素的问题
haolian123 opened this issue · 1 comments
haolian123 commented
// 删除 [first, last) 的元素
template <class CharType, class CharTraits>
typename basic_string<CharType, CharTraits>::iterator
basic_string<CharType, CharTraits>::
erase(const_iterator first, const_iterator last)
{
if (first == begin() && last == end())
{
clear();
return end();
}
const size_type n = end() - last;
iterator r = const_cast(first);
char_traits::move(r, last, n);
size_ -= (last - first);
return r;
}
考虑last到last+n的长度若小于last-first,这个函数只是将[first, last)范围内的元素移动到[first]的位置,但是并没有释放last,到末尾范围内的内存空间,是否最造成内存泄露问题
frederick-vs-ja commented
没有问题。通常来说很难只释放一段动态分配的内存的其中一部分, C/C++ 标准没有提供任何能保证这么做的工具。