今天寫代碼是這個錯誤“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;
}
}