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

代码如下:

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

黄舟
黄舟

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

모든 응답(0)
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿