簡體   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