c++ - std::vector、成员访问运算符和 EXC_BAD_ACCESS

标签 c++ stdvector

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

std::vector<int> v;   // yes, container is empty
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;
}

最佳答案

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

关于c++ - std::vector、成员访问运算符和 EXC_BAD_ACCESS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74108118/

相关文章:

C++ 为什么这行得通

c++ - 使用 C++ Win32 GUI 在窗口中显示文本

c++ - Angstrom Linux 上 BeagleBone Black 的 GPIO/模拟编程,在 Windows 上交叉开发的编译器是什么?

c++ - 连接两个 std::vector - 哪种方法更有效以及如何/为什么?

c++ - 继承类的 vector

c# - 非托管 C++ 代码导致 .Net 应用程序崩溃

c++ - 如何在 D 和 C++ 之间传递字符串?

c++ - 为什么这不会编译?三角函数

C++ vector 内存不足

c++ - 我的 vector 获得了一个额外的索引,即使我不希望它这样做