C++ 调整动态数组大小

标签 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;
}

这是更新后的代码,现在可以正常工作了:

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;
}

最佳答案

delete[] resize_arr 正在删除您创建的新数组。你需要做的

delete[] arr;
arr = resize_arr;

顺便说一句,您不检查以确保新数组大小不小于已用,因此您可能会写出新数组的边界。

另外我认为 size++ 是不正确的。

关于C++ 调整动态数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21667764/

相关文章:

c++ - 如何让代码存在于两个或多个非嵌套命名空间的范围内?

c++ - C++使用外部嵌套结构实现类函数

arrays - 如何将可变数组划分为可变子数组

c++ - 如何从另一个函数调用此 void 函数?

c++ - 如何加快C++中2D三角矩阵的内存分配?

c++ - ChangeDisplaySettings(NULL, 0) 移动/调整我的窗口

c++ - 删除char类型数组

c - 从函数引用数组

c - 如何在数组中存储数组元素

c: 动态分配二维字符数组时出现问题?