鍍金池/ 問答/C++/ C++中關(guān)于delete的一個小問題

C++中關(guān)于delete的一個小問題

C++函數(shù)(非主函數(shù))里面定義的一個指針,在函數(shù)末尾需要自己手動delete么?還是系統(tǒng)會自動delete?
如這段代碼的最后,那個delete是否多余?

void mergeArray(int * & A, int low, int high)
{
    int cnt = 0;
    int * B = new int[high - low + 1];
    int mid = low + (high - low) / 2;
    int i = low;
    int j = mid + 1;
    while( mid + 1 > i && high + 1 > j ) {
        if ( A[i] < A[j] )    B[cnt++] = A[i++];
        else    B[cnt++] = A[j++];
    }
    while( mid + 1 > i )    B[cnt++] = A[i++];
    while( high + 1 > j )    B[cnt++] = A[j++];
//    A:loop from low, B:loop from 0 
    for ( i = low, cnt = 0; i < high + 1; i++ )    A[i] = B[cnt++];
    delete[] B;
}
回答
編輯回答
吢涼

new是再堆上開內(nèi)存,除非整個進程結(jié)束,這時候會被操作系統(tǒng)回收,不然的話函數(shù)結(jié)束后內(nèi)存里的變量還在的

2017年1月25日 23:28