【发布时间】:2012-10-31 01:28:43
【问题描述】:
void change_degree(vector<int> &nodes, map<int, vector<int> > &edges, int vertex){
map<int, vector<int> >::iterator ite;
ite = edges.find(vertex);
vector<int> temp = (*ite).second;
vector<int>::iterator it;
for(it = temp.begin(); it != temp.end(); it++){
cout << *it;
if(nodes[*it + 1] > 1)
nodes[*it + 1]++;
}
}
这个函数产生错误
*** glibc detected *** ./a.out: munmap_chunk(): invalid pointer: 0x09c930e0 ***
谁能告诉我为什么会出现它以及它意味着什么? 提前致谢。
【问题讨论】:
-
vertex可以不在edges中吗?如果不是,则该函数中唯一可能的无效访问是nodes[*it + 1]。 -
gdb和valgrind打招呼! -
顶点存在边。
-
这可能意味着内存滥用正在发生,并且正在释放未分配的东西,或者在附近。如果有问题,请使用
valgrind查找问题。查看malloc()的手册页,了解您有哪些调试选项。
标签: c++ pointers gcc stl iterator