繁体   English   中英

MSVC std::_Container_base12 在 _Myproxy 中有错误的数据

[英]MSVC std::_Container_base12 has wrong data in _Myproxy

我使用 ETT 并将以下组件添加到每个实体。

    template<typename T, typename... Args>
    T& AddComponent(Args&&... args)
    {
        HZ_CORE_ASSERT(!HasComponent<T>(), "Entity already has component!");
        T& component = m_Scene->m_Registry.emplace<T>(m_EntityHandle, std::forward<Args>(args)...);
        m_Scene->OnComponentAdded<T>(*this, component);
        return component;
    }

    struct TagComponent
    {
        std::string Tag;

        TagComponent() = default;
        TagComponent(const TagComponent& other) : Tag(other.Tag) {};
        TagComponent(const std::string tag) : Tag(tag) {}
    };

有时在重新分配期间调用 _Container_base12::_Orphan_all() 时会抛出“访问冲突异常”。 我发现 std::Container_proxy 中两个指针的地址很奇怪。 _Mycont 应该多一个字节才能使地址有意义。 _Myfirstiter 前面不应该有字节 0xfd,它应该是一个 nullptr。

在此处输入图像描述

可能的原因是什么?

0xfd ? 我敢打赌,该值有 4 个字节,而不是一个: Visual Studio C++ 和 Windows 中的调试 memory 填充模式是什么?

您可能正在查看被破坏的 object 的残余物。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM