删除动态数组但保留指针

时间:2012-11-16 11:20:48

标签: c++ arrays pointers

我已经为扩展数组做了一个函数,这个函数在一个类中。

因为此功能会创建new_arr并将array的所有数字复制到new_arr中,并在arraynew_arr的指针结尾设置指针,我想知道如何删除array中的数字我不再需要了

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

由于

2 个答案:

答案 0 :(得分:4)

假设这是一个练习,那么在重新分配到新阵列之前删除该阵列:

delete [] array;
array = new_arr;

在实际代码中,使用std::vector<int>而不是动态分配的数组。

答案 1 :(得分: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;
}
相关问题