返回指针的函数需要我删除返回的值吗?
- 论坛
- 返回指针的函数需要我删除返回的值吗?
15 浏览
返回指针的函数需要我删除返回的值吗?
这个问题已经在此处有答案:
假设我有一个执行某些任务的函数。函数返回一个指向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 Comments
为了记录对象所有权的转移并防止内存泄漏,您应该使用 unique_ptr
返回在堆上分配的对象。这是C ++的最佳实践。
有关更多详细信息,请参见 C ++ Core指南:永远不要使用原始指针(T *)或引用(T&)转移所有权:
原因
如果有疑问,调用者或被调用者是否拥有对象,则会发生泄漏或过早破坏。