munmap_chunk(): invalid pointer


今天寫代碼是這個錯誤“munmap_chunk(): invalid pointer”

這個錯誤其實是使用new 申請空間后,再次對申請的空間進行分配,最后釋放的時候的多次釋放。
比如這樣一段代碼

 size_t len = ????;
 uint8_t *data[2];
 uint8_t* temp = new uint8_t[len];
 if(temp != nullptr) {
    data[0] = temp;
    data[1] = temp + len / 2;
 }
 /// do something  
 // 釋放資源
 for(size_t i = 0; i < 2; i++) {
   delete[] data[i];
   data[i] = nullptr;      
  }   

上述代碼就會報這個錯誤。

這段代碼可以改成這樣

      // 釋放資源
 if(data[1] == (data[0] + len / 2)) {
      delete[] data[0];
      data[0] = nullptr;
      data[1] = nullptr;
}else{
 for(size_t i = 0; i < 2; i++) {
   delete[] data[i];
   data[i] = nullptr;      
  } 
}


免責聲明!

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



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