我一直在尝试调整这个数组的大小,它编译得很好,但是当我运行它时,我得到了这个非常长的错误信息。
以下是该功能的代码:
void arrayClass_Namespace::arrayClass::resize(int newSize)
{
std::cout << "\nPlease input a new size for the array: ";
std::cin >> newSize;
assert(newSize < MAX_SIZE);
int *resize_arr = new int[newSize];
for(int index = 0; index < size; index++)
{
resize_arr[index] = arr[index];
}
size++;
arr = resize_arr;
delete[] resize_arr;
}
这是现在完美无缺的更新代码:
void arrayTools_GabriellaRamirez::arrayTools::resize(int newSize)
{
std::cout << "\nPlease input a new size for the array: ";
std::cin >> newSize;
assert(newSize < MAX_SIZE);
int *resize_arr = new int[newSize];
for(int index = 0; index < size; index++)
{
resize_arr[index] = arr[index];
}
for(int index = size; size < newSize; index++)
{
size++;
}
for(int index = size; size > newSize; index++)
{
size--;
}
delete [] arr;
arr = resize_arr;
}
答案 0 :(得分:6)
delete[] resize_arr
正在删除您制作的新阵列。你需要做
delete[] arr;
arr = resize_arr;
顺便说一句,您不检查以确保新数组大小不小于used
,因此您可能会写出新数组的范围。
我认为size++
不正确。