微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

_Orphan_range 在使用静态向量时崩溃另一个例子

如何解决_Orphan_range 在使用静态向量时崩溃另一个例子

对于 MS Visual Studio 2019 中的调试版本,Ver. 16.10.0,工具集 v142, 我得到了下面的代码异常: _Orphan_range_unlocked() 中的“读取访问冲突” (可能与此处讨论的内容非常相似 [1])

在较旧的 VS 版本、发布版本或使用 clang 工具集时不会出现此问题。 但是,由于崩溃只发生在这些非常特殊的情况下,我怀疑 Visual Studio 中可能存在错误。还是毕竟是编程错误? 我想了解这一点。

#include <vector>
#include <array>

int main()
{
    // Exception: 'read access violation' in _Orphan_range_unlocked()
    // (in C++20 MSVC Debug builds but not in C++17 nor Release)

    static std::array<std::vector<int>,4> arrvec;
    arrvec[0].reserve(3);
    arrvec[0].emplace_back(1);  // <- Exception occurs here
}

[1]:https://stackoverflow.com/a/62605686/15157143)

为此,我在这里打开了一个错误报告:https://github.com/microsoft/STL/issues/1934

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。