2012-11-16 81 views
1

我已經做了一個擴展數組的函數,並且這個函數在類中。刪除一個動態數組,但保留一個指針

因爲這個函數創建new_arr,並將所有的array號碼爲new_arr,並在年底套array終場前new_arr,我沃爾德想知道如何刪除號碼array becuse我不需要任何更多

void Array::bigger() { 
    int new_size = size * 2; 
    int *new_arr = new int[new_size]; 
    for (int f1=0; f1<last; f1++) { 
     new_arr[f1] = array[f1]; 
    } 
    this->size = new_size; 
    array = new_arr; 
} 

感謝

失去指針之前
+5

'delete [] array;''array'new_arr;'之前''。你也可以使用'std :: copy()'將'array'複製到'new_arr'。你也可以使用'std :: vector '而忘記動態內存管理。 – hmjd

回答

3

的可用內存來它:

void Array::bigger() { 
    int new_size = size * 2; 
    int *new_arr = new int[new_size]; 
    for (int f1=0; f1<last; f1++) { 
     new_arr[f1] = array[f1]; 
    } 
    this->size = new_size; 
    delete[] array; //free memory 
    array = new_arr; 
} 
+0

謝謝,你的回答很簡單 – depecheSoul

4

假設這是一個鍛鍊,然後重新分配給新的人之前刪除的磁盤陣列:

delete [] array; 
array = new_arr; 

在實際的代碼,使用std::vector<int>代替動態分配的數組的。