【发布时间】:2014-02-10 01:45:56
【问题描述】:
我一直在尝试调整这个数组的大小,它编译得很好,但是当我运行它时,我得到了这个非常长的错误消息。
这是函数的代码:
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;
}
【问题讨论】:
-
如果您使用
std::vector<int> arr而不是int* arr,这些问题就会消失。 -
以后请发布错误信息。 “非常长的错误消息”对未来的访问者没有任何帮助。
-
@Robᵩ
std::cout << "\nPlease input a new size for the array: ";我认为他在这里不需要生产代码,只是练习。 -
@remyabel 抱歉,我不太明白错误信息。从回溯开始,然后它包含所有这些字符,并因核心转储而中止。
-
@Robᵩ 是的,如果可以的话,我会使用向量,但我主要是在练习数组。
标签: c++ arrays dynamic-allocation