【问题标题】:std::vector, member access operator and EXC_BAD_ACCESSstd::vector、成员访问运算符和 EXC_BAD_ACCESS
【发布时间】:2022-10-18 16:46:37
【问题描述】:

为什么我可以从 (*iterator) 执行 operator&,但不能复制值 (*iterator) ?

std::vector<int> v;
for (int i = 0; i < 10; ++i) {
    auto it = v.begin();
    std::cout << &*(it) << std::endl;   // 0   <- why not EXC_BAD_ACCESS?
    auto value = *(it);                 // EXC_BAD_ACCESS
    auto address = &value;
}

【问题讨论】:

    标签: c++ stdvector


    【解决方案1】:

    v 是空的,因此 v.begin() == v.end() 和取消引用 it 是未定义的。

    【讨论】:

      猜你喜欢
      • 2014-11-04
      • 1970-01-01
      • 1970-01-01
      • 2013-01-29
      • 2018-12-16
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多