![](/img/trans.png)
[英]Custom C++ Allocator cause error in : _Container_base12::_Orphan_all_unlocked_v3()
[英]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.