繁体   English   中英

我正在尝试在函数中为新的内存新的堆内存,但是它给出了一个错误

[英]I'm trying to new memory new heap memory in a function but it gives an error

这是我的代码,我不知道这是怎么回事,为什么我不能新建堆内存?

int*& mergeSort(int* A, int N) {
    if (N == 1) {
        return new int(A[0]); //error
    }

    int mid = N / 2;

    int* A1 = mergeSort(A, mid);
    int* A2 = mergeSort(A + mid, N - mid);

    int* B = merge(A1, mid, A2, N - mid);

    delete []A1;
    delete []A2;

    return B;
}

该代码失败,因为它试图将左值引用返回到右值。 new的结果是一个右值)。

最简单的解决方法是使函数return int *

如果没有此修复程序,则return B; 还会导致未定义的行为,因为您返回了对局部变量的引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM