just read it
smart_ptr: https://mbevin.wordpress.com/2012/11/18/smart-pointers/
使用任何指针是都要考虑ownership+memory-management+lifetime这几个问题。
who is the owner of this object? is there one owner or many? who will responese for the deletion?
使用unique_ptr则表示该对象为owner,但可以转移(std::move)
plain pointers should never be used to act as the ‘owners’ of objects
尽可能多的使用shared_ptr,在环形引用时考虑weak_ptr(不会增加只针的引用计数)
创建一个对象后立即赋值给shared_ptr或者unique_ptr,函数返回普通指针时,也立即将普通指针赋值给智能指针,以保证自动内存管理
智能指针对象直接以值的形式保存在container中,而不是指针或者引用,以传值方式传递函数参数,函数以值返回等(std::move,右值引用)。
使用 shared_ptr是多线程安全的,但是shared_ptr本身不是多线程安全。即,在多线程中使用智能指针时,每个线程都应该有一个shared_ptr对象,而不是多个线程使用同一个shared_ptr对象。
move: https://mbevin.wordpress.com/2012/11/20/move-semantics/
move 与 std模板容器的应用:
to be continued…
时间: 2024-10-28 18:54:15