void F(A* a)
{
delete a;
};
F(new A());
删除操作符是否会释放已分配的内存,或者我必须创建和删除对象,如下所示:
F(A* a) {}
A a = new A();
F(a);
delete a;
答案 0 :(得分:1)
是的,它会释放内存,但最好在C ++ 11之前使用智能指针,例如std::shared_ptr或boost::shared_ptr。同样在您的示例中,最好将释放的指针设置为NULL以避免双重释放到avoiding dangling pointer errors.
void F(A*& a)
{
delete a;
a = NULL;
};
您将无法将其称为F(new A());
,并且需要传递对指针保持变量的引用。就像第二个变种一样。应该有A* a = new A();
,表示a
是指针。