范围结束从内存中清除变量?

时间:2013-11-30 23:37:39

标签: c++ memory scope free

this问题我明白,在大多数情况下范围结束后的C#中,垃圾收集器会收集变量。

但是在 C ++ 中有没有垃圾收集器,但我仍然可以这样做:

{
    int a = 0;
}

{
    int a = 10;
}

使用C ++在范围末尾的内存中的变量会发生什么?

2 个答案:

答案 0 :(得分:3)

您不需要垃圾收集器。这是在堆栈中完成的。无论何时从第一个完成,它将用第二个覆盖它。您唯一需要警惕的是使用new或malloc声明的变量。使用new或malloc时,变量将存储在堆中。如果您不删除或释放未使用的变量,您将有内存泄漏。

答案 1 :(得分:1)

退出范围后,局部变量被desytoyed。如果本地carible的类型是用户定义的类型,则调用析构函数。