从this问题我明白,在大多数情况下范围结束后的C#中,垃圾收集器会收集变量。
但是在 C ++ 中有没有垃圾收集器,但我仍然可以这样做:
{
int a = 0;
}
{
int a = 10;
}
使用C ++在范围末尾的内存中的变量会发生什么?
答案 0 :(得分:3)
您不需要垃圾收集器。这是在堆栈中完成的。无论何时从第一个完成,它将用第二个覆盖它。您唯一需要警惕的是使用new或malloc声明的变量。使用new或malloc时,变量将存储在堆中。如果您不删除或释放未使用的变量,您将有内存泄漏。
答案 1 :(得分:1)
退出范围后,局部变量被desytoyed。如果本地carible的类型是用户定义的类型,则调用析构函数。