void F(A* a)
{
delete a;
};
F(new A());
删除运算符是否会释放分配的内存,或者我必须像这样创建和删除对象:
F(A* a) {}
A a = new A();
F(a);
delete a;
void F(A* a)
{
delete a;
};
F(new A());
删除运算符是否会释放分配的内存,或者我必须像这样创建和删除对象:
F(A* a) {}
A a = new A();
F(a);
delete a;
是的,它会释放内存,但最好在 C++11 之前使用诸如std::shared_ptr或boost::shared_ptr之类的智能指针。同样在您的示例中,最好将已释放指针设置为 NULL 以避免双重释放以避免悬空指针错误。
void F(A*& a)
{
delete a;
a = NULL;
};
您将无法将其称为F(new A());
直通,并且需要将引用传递给指针持有变量。就像在第二个变体中一样。应该在A* a = new A();
那里,以表明这a
是一个指针。