don*_*lmg 1 c++ segmentation-fault
我有一个创建地图数组的函数:
map<string, int> *pMap
Run Code Online (Sandbox Code Playgroud)
还有一个将映射写入数组的函数:
int iAddMap(map<string, int> mapToAdd, map<string, int> *m, int i)
{
m = &(pMap[i]);
memcpy(m, mapToAdd, sizeof(map<string, int>));
}
Run Code Online (Sandbox Code Playgroud)
以及从数组中获取映射的函数
map<string, int>& getMap(int i)
{
return pMap[i];
}
Run Code Online (Sandbox Code Playgroud)
我可以毫无问题地将数据写入数组,但每次调用都会导致seg错误:
int val;
// val defined after this
map<string, int> * pGetMap = &(getMap(val));
Run Code Online (Sandbox Code Playgroud)
有关为什么会发生这种情况的任何建议?
小智 8
你不能使用memcpy()复制像map这样的对象,或者实际上任何其他类型的C++容器 - 你需要使用赋值,它考虑了map的底层结构和se,mantics.你应该使用a vector <map>,因为你实际上似乎想要一个副本而不是一个指针.