1

配列を展開する関数を作成しましたが、この関数はクラス内にあります。

この関数はnew_arrのすべての数字を作成して にコピーarrayし、最後にwithnew_arrのポインターを設定するため、もう必要ないので 数字を削除する方法を知りたいですarraynew_arrarray

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;
}

ありがとう

4

2 に答える 2

4

これが演習であると仮定すると、新しい配列に再割り当てする前に配列を削除します。

delete [] array;
array = new_arr;

実際のコードでstd::vector<int>は、動的に割り当てられた配列の代わりにを使用します。

于 2012-11-16T11:22:32.820 に答える
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;
}
于 2012-11-16T11:22:30.277 に答える