删除动态数组,但保留指针

Delete a dynamic array but keep a pointer

本文关键字:保留 指针 动态 数组 删除      更新时间:2023-10-16

我做了一个扩展数组的函数,这个函数在一个类里。

因为这个函数创建new_arr并将array的所有数字复制到new_arr中,并在最后设置带有new_arrarray指针,我想知道如何删除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;
}

谢谢

假设这是一个练习,然后在重新分配给新数组之前删除数组:

delete [] array;
array = new_arr;

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

丢失指向它的指针之前释放内存:

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