C如何正确释放内存?

新手上路,请多包涵
int main(){
    int *a = new int[5];
    int *b = new int[10];
    int *c;
    for (int i = 0; i < 5; ++i){
        a[i] = i * i;
    }
    for (int i = 0; i < 10; ++i){
        b[i] = 50;
    }
    c = a;
    a = b;
    delete[]b;
    delete[]c;
    return 0;
}

上面的代码执行后,原来指向的内存 a 是否被释放了?

如果没有,如何正确释放?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~

指针 a 必须留作他用,所以禁止直接删除a。

这段代码的目的是访问属于 b 的内存,最初是通过 a 并释放内存 a 曾经正确拥有的。

原文由 Ruby Sapphire 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 283
1 个回答

是的,内存被释放了。但是,在更改指针指向的内容时要非常小心,因为它很容易导致内存泄漏。

原文由 Math Newbie 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题