[英]When use 'new', what's the difference between returning the pointer by reference or by pointer itself?
在c ++中,當我在函數中使用“ new”時,將創建一個指針。 然后,當我考慮返回函數的結果時,按引用和按指針有什么區別?
喜歡:
引用
Sample& (int & x, int & y){
Sample * temp = new Sample(x,y);
return *temp;
}
按指針本身
Sample* (int & x, int & y){
Sample * temp = new Sample(x,y);
return temp;
}
似乎如果不正確地使用“新”功能會導致內存泄漏,在上述情況下是否會發生內存泄漏? 還是將來重新使用這些退貨材料時會存在一些風險?
如果返回引用,則向調用者暗示它們不需要delete
返回的對象,從而導致內存泄漏。 如果他們只看您的API而不看函數的實現,則暗示會更加強烈。
建議使用智能指針來使調用方知道對象是動態分配的,並且對象應在其生命周期管理中進行協作。 如果沒有令人信服的理由這樣做, 按價值回報甚至更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.