首页 > 向list中插入新元素时发生段错误会有哪些原因呢?

向list中插入新元素时发生段错误会有哪些原因呢?

代码如下:

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类型不是数组,怎么会有分配空间失败的情况呢?

【热门文章】
【热门文章】