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 许可协议
是的,内存被释放了。但是,在更改指针指向的内容时要非常小心,因为它很容易导致内存泄漏。