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;      
  } 
}

posted @ 2020-09-09 17:11  cyssmile  阅读(15117)  评论(0编辑  收藏  举报