Sir*_*ton -2 c++ pointers function
假设我有一个执行某些任务的函数。该函数返回一个指向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;
}
Run Code Online (Sandbox Code Playgroud)
为了记录对象所有权的转移并防止内存泄漏,您应该使用来返回在堆上分配的对象unique_ptr。这是C ++最佳实践。
有关更多详细信息,请参见C ++核心准则:切勿通过原始指针(T *)或引用(T&)转让所有权:
原因
如果不确定调用者或被调用者是否拥有某个对象,将发生泄漏或过早破坏。