返回指针的函数需要我删除返回的值吗?

15 浏览
0 Comments

返回指针的函数需要我删除返回的值吗?

这个问题已经在此处有答案

何时使用new和delete

在C++中何时使用“new”和何时不使用?[重复]

何时应该在C++中使用new关键字?

假设我有一个执行某些任务的函数。函数返回一个指向int的指针。我的问题是:我必须释放内存吗,还是这个一般格式可以?

int *do_something()
{
    int *local{ new int };
    //do_something_here
    return local;
    delete local;
}
int main()
{
   int *result{ new int };
   result = do_something();
   delete result;
   return 0;
}

admin 更改状态以发布 2023年5月23日
0
0 Comments

为了记录对象所有权的转移并防止内存泄漏,您应该使用 unique_ptr 返回在堆上分配的对象。这是C ++的最佳实践。
有关更多详细信息,请参见 C ++ Core指南:永远不要使用原始指针(T *)或引用(T&)转移所有权

原因

如果有疑问,调用者或被调用者是否拥有对象,则会发生泄漏或过早破坏。

0