Operator函数调用新增功能

Operator New in function call

本文关键字:功能 新增 函数调用 Operator      更新时间:2023-10-16
void F(A* a)
{
    delete a; 
};
F(new A());

delete操作符会释放分配的内存,还是必须像这样创建和删除对象:

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()); thru,将需要传递对指针保存变量的引用。就像第二种变体一样。这里应该有A* a = new A();,表示a是一个指针