c++ - Should a function return a "new" object -
should function return pointer memory allocated on heap?
in other words, of following methods more "correct"?
// method #1 object* getobject1() {     return new object(); }  // method #2 std::shared_ptr<object> getobject2() {     return std::make_shared<object>(); }  int main() {     // usage of method #1     object* o1 = getobject1();     o1->dosomething();     delete o1; // object has deleted user      // usage of method #2     std::shared_ptr<object>& o2 getobject2(); // has kept in shared_ptr     o2.get()->dosomething();     // object deleted when o2 destructs } i imagine first method faster, second method not require user delete object.
of two, second preferred. naked pointers should last choice. ideally, return object value. failing that, unique_ptr better shared_ptr unless need shared ownership.
i imagine first method faster.
that's true shared_ptr. unique_ptr, compiler can optimize. there's no benefit pays risk of manual deletion.
Comments
Post a Comment