【发布时间】:2020-09-14 14:30:01
【问题描述】:
我正在尝试更多地了解 C++ 指针和释放内存。 假设我们有以下代码
int main{
int * A = new int[4];
int * B = new int[4];
A = B;
delete[] A;
delete[] B;
return 0;
}
A 指向一个新创建的指针,而 B 指向另一个指针,所以我们总共有两个指针。
现在说A = B 意味着A 和B 现在指向同一个指针。因此,在这种情况下,另一个指针会发生什么?我们怎样才能删除它?
【问题讨论】:
-
1) 它永远丢失了,2) 你不能。附: “A 和 B”不是“指向同一个指针”。
-
@SamVarshavchik 他们指的是什么?
-
A = B;和delete[] A;语句应该交换以避免内存泄漏。 -
他们指向
ints。它们没有指向另一个指针。 -
@HasanH 即使那样你也不应该使用
new;)。智能指针可在您需要时提供对它们管理的指针的访问