[英]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.