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