在c ++中,当我在函数中使用" new"时,将创建一个指针。 那么,当我考虑返回函数的结果时,引用和指针之间的区别是什么?
像:
BY参考
Sample& (int & x, int & y){
Sample * temp = new Sample(x,y);
return *temp;
}
BY指针本身
Sample* (int & x, int & y){
Sample * temp = new Sample(x,y);
return temp;
}
使用“&new”时,似乎会导致内存泄漏。不正确,在上述情况下会发生内存泄漏吗?或者,重用这些退货材料将来会有一些风险吗?
答案 0 :(得分:4)
如果返回引用,则向调用者暗示他们不需要delete
返回的对象,从而导致内存泄漏。如果他们只看你的API而不是功能实现,那么这个含义就更强了。
建议使用智能指针让调用者知道对象是动态分配的,并且他们应该在其生命周期管理中合作。如果没有令人信服的理由,那么以值返回会更好。