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

代码如下:

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)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!