c++ - 向list中插入新元素时发生段错误会有哪些原因呢?
黄舟
黄舟 2017-04-17 11:36:45
0
0
429

代码如下:

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

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(0)
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan