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。这段代码的目的是通过
a
访问原本属于b
的内存,并正确释放a原来占用的内存。
c
来删除a
的内存。 - Hatted Roostera
和b
呢?这样会省去很多麻烦。 - byxorvector
来实现这一点。因此实现起来会看起来很像智能指针(例如,你可能希望有引用计数)。 - Peter - Reinstate Monica