c++ - 使用 'new' 时,通过引用返回指针或通过指针本身返回指针有什么区别?

标签 c++ reference return

在 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/

相关文章:

c++ - #include <fstream> visual c++ 2010 无法正常工作

c++ - 释放指向静态数组的指针

c++ - 引用为成员变量

c# - 我可以在像 C++ 这样的 C# 函数中使用引用吗?

return - 如何从 Solidity 中的多个函数返回中仅获取必要的值?

Python 无法返回最终值

c++ - 为什么 ostringstream 在多线程环境下不能正常工作

c++ - MSVS2010 链接器错误悲伤 - 不完全确定出了什么问题

c++ - 这会复制 vector 吗?

java - java中的int返回类型