gpt4 book ai didi

c++ - 函数调用中的运算符 New

转载 作者:行者123 更新时间:2023-11-28 07:39:01 25 4
gpt4 key购买 nike

void F(A* a)
{
delete a;
};

F(new A());

删除运算符会释放分配的内存还是我必须像这样创建和删除对象:

F(A* a) {} 

A a = new A();
F(a);
delete a;

最佳答案

是的,它会释放内存,但最好使用智能指针,例如 std::shared_ptrboost::shared_ptr而不是在 C++11 之前。同样在您的示例中,最好将释放的指针设置为 NULL 以避免对 avoiding dangling pointer errors. 进行双重释放。

void F(A*& a)
{
delete a;
a = NULL;
};

您将无法通过 F(new A()); 调用它,并且需要将引用传递给持有变量的指针。就像在第二个变体中一样。应该有 A* a = new A(); 贯穿其中,以指示 a 是一个指针。

关于c++ - 函数调用中的运算符 New,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16215164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com