vector.clear()的内存泄露问题

Posted 后端技术小屋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vector.clear()的内存泄露问题相关的知识,希望对你有一定的参考价值。

  在使用vector的过程中,经常会遇到以下场景   

vector<int> vec;
while (1)
{
  vec.push_back(1);
  vec.push_back(2);
  vec.push_back(3);
  ....  
  
  // 处理的vec
  func(vec);

  // 释放vec内存
  vec.clear();            
}

  可是使用clear释放vector内存有是问题的,可参考c++标准:

  

  clear只是将vector的size置零,可是并不保证capacity为零,因此clear并不能释放vector已经申请的内存。可使用vector<T>().swap(x)完成释放内存的操作。

 

以上是关于vector.clear()的内存泄露问题的主要内容,如果未能解决你的问题,请参考以下文章

为啥这段代码会泄露? (简单的代码片段)

为啥这段代码可以正常工作? (vector.clear(), vector<vector<int>>)

为啥 vector::clear 不从向量中删除元素?

PHP CURL内存泄露的解决方法

每日一练5

C++ vector::clear() - 破坏顺序? [复制]