C++调整动态数组的大小

use*_*299 0 c++ arrays dynamic-allocation

我一直在尝试调整这个数组的大小,它编译得很好,但是当我运行它时,我得到了这个非常长的错误信息.

这是函数的代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

这是现在完美运行的更新代码:

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;
}
Run Code Online (Sandbox Code Playgroud)

use*_*380 6

delete[] resize_arr正在删除您制作的新阵列.你需要这样做

delete[] arr;
arr = resize_arr;
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您不检查以确保新数组大小不小于used您可能写出新数组的范围.

我认为size++也不正确.