结论优先
如果在vector push back过程中出现引用元素的情况,可能导致内存问题。
|
|
会发现(void*)vs[0].c_str()
的地址会发生变化,在capacity为8、16、32、64的时候,会变化,因为vector在push新元素的时候,会resize,拷贝原有数据到新申请的地址,释放掉原有地址。
同时对list和map做了测试,不会出现重新分配内存的情况。
此种情况在ubuntu14上不会出现,ubuntu16上稳定出现,说明两个系统的系统库实现方式有区别。
天桥扛把子
如果在vector push back过程中出现引用元素的情况,可能导致内存问题。
|
|
会发现(void*)vs[0].c_str()
的地址会发生变化,在capacity为8、16、32、64的时候,会变化,因为vector在push新元素的时候,会resize,拷贝原有数据到新申请的地址,释放掉原有地址。
同时对list和map做了测试,不会出现重新分配内存的情况。
此种情况在ubuntu14上不会出现,ubuntu16上稳定出现,说明两个系统的系统库实现方式有区别。
本文标题:STL vector使用不当导致内存错误
文章作者:Louis
发布时间:2018年01月05日 - 16:01
最后更新:2018年01月05日 - 16:01
许可协议: Louis-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。