std::shared_ptr是C++11标准库中定义的智能指针,与其他智能指针(如std::unique_ptr和std::weak_ptr)相比有以下区别: 所有权共享:std::shared_ptr可以共享所有权,多个std::shared_ptr可以指向同一个对象,当最后一个指向对象的std::shared_ptr被销毁时,对象才会被释放。而std::unique_ptr拥有唯一所有权,不能被...
通过shared_ptr对象对资源进行访问就是通过该指针成员变量进行实现的。这里初始化为0对应的是将该指针变量...
1 struct test 2 { 3 int num; 4 string name; 5 }; 6 7 test* pTest = new test(); 8 std::shared_ptr<test> ptr_test = std::shared_ptr<test>(pTest); //普通指针转shared_ptr 9 10 std::shared_ptr<test> ptr_test2 = std::make_shared<test>(); 11 test* pTest2 = ptr_test...
std::cout <<"使用计数: "<< ptr1.use_count() << std::endl;// 输出 1 // ptr1离开作用域,对象被删除 } 比较unique_ptr 和 shared_ptr 最佳实践 优先使用std::unique_ptr,除非确实需要共享所有权。 使用std::make_unique和std::make_shared来创建智能指针。 避免使用裸指针,尽可能使用智能指针。 ...
std::shared_ptr<Data> Ptr(new Data); //智能指针出了作用域就会被释放,引用计数减一 } cout<<"普通指针:"<<endl; Data* ptr = new Data; delete ptr; return 0; } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
std::shared_ptr是C++中智能指针的一种,它通过引用计数机制来管理资源的生命周期。这个机制类似Java语言中的内存管理和垃圾回收管理中的引用计数是一个原理。具体的Java实现的原理,可以在网络上找到很多介绍的文章,本文就不再赘述。 在使用std::shared_ptr进行对象创建或者管理时,需要注意一点,因为其管理的对象的指针...
std::shared_ptr 是一种智能指针,它能够记录多少个 shared_ptr 共同指向一个对象,从而消除显示的调用 delete,当引用计数变为零的时候就会将对象自动删除。 std::shared_ptr 可以通过 get() 方法来获取原始指针,通过 reset() 来减少一个引用计数, 并通过use_count()来查看一个对象的引用计数。例如: ...
weak_ptr是一个不拥有所有权的智能指针,其主要用来检测shared_ptr的控制块以判断shared_ptr所管理的资源是否存活! weak_ptr提供如下三个有用接口 use_count 返回shared_ptr的引用计数 expired 检查是否shared_ptr所管理的资源已经被删除 lock 生成一个shared_ptr ...
用多个share_ptr指向同一个对象,这多个share_ptr必须有关联,也就是通过智能指针给智能指针赋值,而不是用原始指针。指向同一个对象的share_ptr必须有关联,这样才能对同个对象进行准确的引用计数。 如 {A*p=newA(1);std::shared_ptr<A>p1(p);//p1的usecount为1std::shared_ptr<A>p2(p);//p2的usecount...
用多个share_ptr指向同一个对象,这多个share_ptr必须有关联,也就是通过智能指针给智能指针赋值,而不是用原始指针。指向同一个对象的share_ptr必须有关联,这样才能对同个对象进行准确的引用计数。 如 {A*p=newA(1);std::shared_ptr<A>p1(p);//p1的usecount为1std::shared_ptr<A>p2(p);//p2的usecount...