在C ++中删除对象有哪些方法?

时间:2011-03-22 10:14:36

标签: c++ memory memory-management

在非托管C ++中,如何从内存中清除对象?

4 个答案:

答案 0 :(得分:12)

这取决于你如何分配它们:

  • new应与delete
  • 匹配
  • new[]应与delete[]
  • 匹配
  • malloc应该与free匹配(你不应该在C ++中使用它)

现在,忘记所有这些事情,使用Smart Pointers并阅读RAII

答案 1 :(得分:1)

您无需担心堆栈上分配的变量。如果使用new在堆上分配内存,则需要使用delete

MyClass *p = new MyClass(); 
// Code

delete p;

答案 2 :(得分:0)

您只能删除使用new分配的那些,否则将抛出异常。

答案 3 :(得分:0)

{
    Object obj = Object;
    // no need to delete this one it will be delete when it gos out of scop
}

Object* obj;
{
    obj = new Object();
    // you need to delete this one because you used the "new" keyword, even if it gos out of scop
}
delete obj;