Heim > Fragen und Antworten > Hauptteil
代码如下:
if(iter1 == nodeList.end())
{
QueryVarVal vv(INSTANCE, "$$", classA, ((*iter)->getId());
nodeList.push_front(make_pair(false, vv));//出问题的地方
vv.setValue(NULL);
}
nodeList是一个list类型。
网上说段错误的可能原因是访问了禁止访问的内存地址,这里没有这样的情况吧?
我考虑过可能是迭代器失效的问题,不过这段代码位于两层循环的内循环中,此时iter并未失效。
程序因为段错误中止时,错误信息如下:
0x0000000000000045 in ?? () at /usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/bits/stl_list.h:464
464 _M_get_Tp_allocator().construct(&__p->_M_data, __x);
看起来像是分配内存空间失败了,但List类型不是数组,怎么会有分配空间失败的情况呢?