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)完成釋放內存的操作。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM