当前位置:   article > 正文

记项目中的一次内存泄漏问题_struct中包含vector push_back的时候出现内存错误

struct中包含vector push_back的时候出现内存错误

  最近在使用QT开发一个大型项目,内存占用可能有点多,其中在vector.push_back()的时候报了一个segment fault错误,感到很奇怪。

  因为平时遇到段错误,大多数情况下都是数组越界(使用[]访问元素),而vector的push_back()函数,在添加元素时,如果空间不足,会先向内存申请原来空间的两倍大小的新的空间,然后把原来空间的元素拷贝到新空间。

  所以这个时候问题就定位到了申请新空间这个步骤上,如果系统没有更多的内存可供申请了呢?那么就会报段错误。而我们知道堆内存有2-3G,一般都不会占满堆内存。什么时候会占满堆内存呢?有一种内存错误会导致这种情况发生,那就是内存泄漏!!!内存泄漏一般发生在使用new申请了内存空间,但是没有使用delete释放,因此会导致内存泄漏,不断膨胀

  所以要谨记《Effective C++》中提到的,new和delete要配对使用,如果允许的话,尽量多使用智能指针

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/478225
推荐阅读
相关标签
  

闽ICP备14008679号