簡體   English   中英

使用“ new”時,按引用返回指針還是按指針本身返回指針有什么區別?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM