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