在非托管C ++中,如何从内存中清除对象?
答案 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;