首页 > 解决方案 > crtls 我的头类中的有效堆指针(块)

问题描述

我试图通过创建另一个指针然后将其复制到原始指针来增加指针大小,但首先它只打印存储在其中的内存地址,然后它因调试断言失败而崩溃。

int sumArray(int* arr, unsigned r) {

    r++;
    int *secArr = new int[r];
    for (int i = 0; i<r - 1; i++)   
    {
        secArr[i] = arr[i];  
    }

    secArr[r - 1] = sum % r;

    delete[] arr;

    arr = new int[r];


    for (size_t i = 0; i < r - 1; i++)
    {
        arr[i] = secArr[i];
    }
    delete[] secArr;        

    return 0;
}

标签: c++11

解决方案


C++ 使用按值传递,除非您明确使用引用。Nowint* arr是一个指针,这个指针在这里是按值传递的。这意味着您将获得指针的副本,但不会获得指向元素的副本。所以你可以更新arr[0]但不能更新arr自己。

话虽如此,不要使用这样的指针。使用std::vector<int>& arr.


推荐阅读