可能重复:
Does using references instead of pointers, resolve memory leaks in C++?
当我问这个问题时
Does using references instead of pointers, resolve memory leaks in C++?
出现了一个新问题,我在这篇文章中提出了这个问题。
此代码是否会泄漏内存?
class my_class
{
...
};
my_class& func()
{
my_class* c = new my_class;
return *c;
}
int main()
{
my_class& var1 = func();
// I think there is no memory leak.
return 0;
}
答案 0 :(得分:8)
是的,它会泄漏内存。 new
创建的所有内容都必须由delete
销毁。您的代码中有new
,但没有delete
。这立即意味着new
内存被泄露。
答案 1 :(得分:2)
确实会造成内存泄漏。看看这个例子:
int main()
{
my_class var1;
my_class& var2 = var1;
...
}
这里var1的析构函数只会调用一次,如果你的假设是真的,它会被调用两次。
答案 2 :(得分:0)
是的,你必须释放使用'new'运算符或使用'malloc'函数分配的对象的每个实例。
答案 3 :(得分:0)
确保在完成后使用“删除”清除内存。