如果我有一个function
声明了int
,那么在function
的末尾我需要“释放”int
来节省内存吗?
示例:
void doSomething() {
int x = 0;
// do something with x
free(x); // needed?
}
答案 0 :(得分:7)
以下是你的记忆管理诫命
答案 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()
- 请改用new
和delete
。
答案 4 :(得分:1)
如果您使用new
动态分配内存,则不需要释放内存。在这种情况下,此变量位于堆栈中,并在函数结束时被销毁。
答案 5 :(得分:0)
您只需要释放已在代码中分配内存的变量。在您的示例中,x
在本地声明,程序在堆栈上为其分配内存。在函数结束时,变量会自动销毁。所以你不必担心它。