我正在尝试创建一个动态分配的数组,当它被填充时,会创建一个足够大以容纳所有内容的新数组,并将旧数组中的所有值复制到新数组中。我在我的 append 函数中做,当调用它时动态分配一个新数组,tmp 指向它,然后将值从 arr[i] 移动到 tmp[i]。但是,我想知道完成后是否需要删除 tmp ?因为当我尝试在不删除 tmp 的情况下打印数组的内容时,它打印得很好,但是当我删除 tmp 时,事情开始变得很奇怪,并且内容不再按应有的方式打印。这是我的代码:
ArrayList::ArrayList(int initsize): last(0), size(initsize), origsize(initsize)
{
arr = new int[size];
}
ArrayList::ArrayList()
{
last = 0;
size = 16;
origsize = 16;
arr = new int[size];
}
void ArrayList::append(int value)
{
if (last<size) {
arr[last] = value;
}
last++;
if (last == size) {
int* tmp = new int[size+origsize];
int i = 0;
for (i=0; i<(size+origsize); i++)
tmp[i] = arr[i];
size = size+origsize;
arr = tmp;
arr[last] = value;
//delete tmp;
}
}