在cpp中,我是否必须始终“释放”原始变量?

时间:2013-03-21 13:52:58

标签: c++

如果我有一个function声明了int,那么在function的末尾我需要“释放”int来节省内存吗?

示例:

void doSomething() {
    int x = 0;
    // do something with x
    free(x); // needed?
}

6 个答案:

答案 0 :(得分:7)

以下是你的记忆管理诫命

  • 你只能
  • 你只能 删除 new'ed
  • 你只能 删除[] new []'ed
  • 您应尽可能使用 RAII

答案 1 :(得分:3)

没有。它是一个自动变量,意味着当它超出范围时会被释放。

另外,你很少在C ++中使用free(),它是一个C函数。

答案 2 :(得分:1)

没有。 int对象具有自动存储持续时间。它在其范围的最后被破坏,即当函数结束时。

无论如何,你不应该在C ++中使用free。它仅在您使用malloc分配内存时使用,但在C ++中不经常使用malloc。相反,您应该使用new来动态分配对象。使用new创建动态存储持续时间的对象时,请使用delete将其销毁。

答案 3 :(得分:1)

没有

x是一个堆栈变量,将在doSomething()返回时自动删除。

只有那些用malloc()手动分配的对象必须是free() d(在C ++中非常罕见)。另外,请勿在C ++中使用free()malloc() - 请改用newdelete

答案 4 :(得分:1)

如果您使用new动态分配内存,则不需要释放内存。在这种情况下,此变量位于堆栈中,并在函数结束时被销毁。

答案 5 :(得分:0)

您只需要释放已在代码中分配内存的变量。在您的示例中,x在本地声明,程序在堆栈上为其分配内存。在函数结束时,变量会自动销毁。所以你不必担心它。