在 C++ 中,当我在函数中使用“new”时,将创建一个指针。 那么,当我考虑返回函数的结果时,by reference和by pointer有什么区别呢?
喜欢:
引用文献
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使用不当会导致内存泄露,请问以上这些情况会不会导致内存泄露?还是这些回料再利用以后会有什么风险?
最佳答案
如果您返回一个引用,则意味着调用者不需要delete
返回的对象,从而导致内存泄漏。如果他们只查看您的 API 而不是函数实现,那么这种暗示会更加强烈。
使用智能指针是让调用者知道对象是动态分配的并且他们应该在其生命周期管理中合作的推荐方式。当没有令人信服的理由不这样做时,按值 返回会更好。
关于c++ - 使用 'new' 时,通过引用返回指针或通过指针本身返回指针有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29296302/