自定义迭代器实现导致内存泄漏

时间:2015-11-05 20:38:43

标签: c++ templates memory-leaks stl iterator

我已经为自定义库实现了一个random_access_iterator(它被模板化为可以作为const迭代器和非const迭代器重用),但它在执行像{{1}这样的操作时会导致内存泄漏(std::sort(container.begin(), container.end()返回container.begin()/end()个实例。

我的实施有什么问题?

iterator

1 个答案:

答案 0 :(得分:1)

不知道是否会导致内存泄漏,而是这两个运营商

  self_type operator+(difference_type value) {
    ptr_ += value;
    return *(this);
  };

  self_type operator-(difference_type value) {
    ptr_ -= value;
    return *(this);
  };

应该只返回一个新的迭代器,而不是更新存储的ptr_

另外,

中存在拼写错误
  self_type operator++(int) {
    self_type temp(*this);
    --(*this);
    return (temp);
  }

让它走向错误的方向。这可能会混淆一些循环。