typedef struct MyStruct {
unordered_set<int> mySet;
}MyStruct;
int main(){
unordered_set<int> sset{ 1,2,3,4,5 };
MyStruct tk;
tk.mySet = sset; //This works fine.
for (auto x : tk.mySet) printf("%d ", x);
MyStruct *Arr = (MyStruct *)malloc(10* sizeof(MyStruct));
Arr[0] = tk; // This isnt working, giving an exception
//the same code runs as expected on codeblocks
for (auto x : Arr[0].mySet) printf("%d ", x);
return 0;
}
这是我运行调试器时得到的异常。Visual Studio unordered_set异常,在代码块上工作
<fileName>.exe!std::list<int,std::allocator<int> >::_Orphan_ptr(std::_List_node<int,void *> * _Ptr) Line 1919 C++ <fileName>.exe!std::list<int,std::allocator<int> >::clear() Line 1501 C++ <fileName>.exe!std::_Hash<std::_Uset_traits<int,std::_Uhash_compare<int,std::hash<int>,std::equal_to<int> >,std::allocator<int>,0> >::_Copy(const std::_Hash<std::_Uset_traits<int,std::_Uhash_compare<int,std::hash<int>,std::equal_to<int> >,std::allocator<int>,0> > & _Right) Line 843 C++ <fileName>.exe!std::_Hash<std::_Uset_traits<int,std::_Uhash_compare<int,std::hash<int>,std::equal_to<int> >,std::allocator<int>,0> >::operator=(const std::_Hash<std::_Uset_traits<int,std::_Uhash_compare<int,std::hash<int>,std::equal_to<int> >,std::allocator<int>,0> > & _Right) Line 291 C++ <fileName>.exe!std::unordered_set<int,std::hash<int>,std::equal_to<int>,std::allocator<int> >::operator=(const std::unordered_set<int,std::hash<int>,std::equal_to<int>,std::allocator<int> > & _Right) Line 187 C++ <fileName>.exe!main() [External Code] [Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
你在哪里读过使用'malloc'在C++中创建复杂的类类型会好吗?我们需要纠正您使用的学习资源。 –
我不知道,只是玩它,顺便说一句,为什么这对gcc工作? – praveen
它没有。它纯粹出现在纯粹的机会中。 –