在自定义类型的向量(基本上是图形节点)上调用insert函数时,我遇到了一个奇怪的错误.以下是生成seg错误的代码:
69 for (int i = 0; i < size; i++) {
70 PDTNode * node = arguments[i]->getNode();
71 //addChild(node);
72 children.insert(it, node); // children is vector <PDTNode*>
73 it++;
74 node->addParent(this);
75 }
Run Code Online (Sandbox Code Playgroud)
我仔细检查所有输入,一切正常,不是NULL.下面是我为seg错误获得的gdb堆栈跟踪:
#0 0x00007ffff4793202 in ?? () from /lib/libc.so.6
#1 0x00007ffff479163a in memmove () from /lib/libc.so.6
#2 0x00000000004289f1 in std::__copy_move<false, true, std::random_access_iterator_tag>::__copy_m<PDTNode*> (__first=0x100bd60, __last=0x10053c8,
__result=0x1001840) at /usr/include/c++/4.4/bits/stl_algobase.h:378
#3 0x00000000004289ab in std::__copy_move_a<false, PDTNode**, PDTNode**> (__first=0x100bd60, __last=0x10053c8, __result=0x1001840)
at /usr/include/c++/4.4/bits/stl_algobase.h:397
#4 0x0000000000428973 in std::__copy_move_a2<false, PDTNode**, PDTNode**> (__first=0x100bd60, __last=0x10053c8, __result=0x1001840) …Run Code Online (Sandbox Code Playgroud)