0
我想創建一個數組,它在填充時會導致創建一個新的更大的數組,它會將舊數組的值複製到前一個數組中,並將繼續向從舊的那個中斷的新陣列。我的代碼工作正常,而我將在第一個陣列,但一旦我打電話追加我已經填補了原來的排列後,我最終得到一個奇怪的錯誤:我得到了一個glibc檢測到的錯誤
*** glibc detected *** demo: double free or corruption (fasttop): 0x0000000000602010 ***
不知道這是怎麼回事上!我不確定爲什麼。
#include <iostream>
using namespace std;
class ArrayList {
public:
int* array;
public:
int capacity = 0;
int size = 16;
ArrayList() {
array = new int(size);
}
void append(int data) {
if (size == capacity) {
int* tmp = new int(size+16);
for (int i = 0; i != size; i++) {
tmp[i] = array[i];
delete [] array;
}
array = tmp;
} else {
array[capacity] = data;
capacity++;
// std::cout << *(array+15) << std::endl;
}
delete [] array在錯誤的地方。應在循環操作完成後執行。 – user2784234
我被空白蒙上了一層陰影。 – crashmstr
@ user2784234嗯,我做到了。我不再有錯誤,但當我嘗試測試數組[16]或更高版本時,它只是給出了0 – FrostyStraw