这段代码会泄漏内存吗? (引用,新的,但没有删除)

时间:2011-07-21 23:40:37

标签: c++ memory-leaks

  

可能重复:
  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;
}

4 个答案:

答案 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)

确保在完成后使用“删除”清除内存。