crtls我的标头类中的有效堆指针(块)

时间:2019-01-08 13:54:51

标签: c++11

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

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

1 个答案:

答案 0 :(得分:1)

C ++使用值传递,除非您明确使用引用。现在int* arr是一个指针,该指针在此处按值传递。这意味着您获得了指针的副本,但没有指向的元素的副本。因此,您可以自己更新arr[0]而不是arr

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