c++中关于智能指针std::tr1::shared_ptr的用法
2013-05-08 10:05
561 查看
智能指针本身绝对不能是动态分配的内存,不然智能指针就没有存在的意义了。 智能指针有个数据成员,是个指针,至于什么类型,看你类模板怎么实现。这个指针才是动态分配内存的。 只能本身必须是栈里分配内存。利用栈的自动回收数据的特性,在被系统西东回收时,调用智能指针类的析构函数,从而释放智能指针内部那个指针型数据成员所指向的内存。 举个例子 std::shared_ptr<int> p = std::shared_ptr<int>(new int); 这样你就声明了一个智能指针p,并且为其内部的真实指针分配了内存空间。 使用时p可以像一般指针那样用 比如 *p = 5; 即给其赋值5。 还有就是虽然你一开始new了,但是你不需要delete,只能指针会在其被系统销毁时,检查是否需要delete。 你这个智能指针是share的,意味着支持共享真实指针的所有权。 所以你还可以 std::shared_ptr<int> q = p; 这样p和q同时指向同一个内存。 如果p失效了,p的析构函数不会delete真实指针,因为q还没失效。只有当q也失效,p才会在自己失效时自动delete掉内部的真实指针。这就是智能指针智能的地方
相关文章推荐
- c++智能指针《二》 std::tr1::shared_ptr
- C++:智能指针-TR1的shared_ptr和weak_ptr使用介绍
- 说说C++智能指针(1): 关于shared_ptr
- C++:智能指针-TR1的shared_ptr和weak_ptr使用介绍
- C++中的智能指针(1):shared_ptr 的介绍和用法
- C++智能指针:TR1的 shared_ptr 和 weak_ptr 使用介绍
- C++:智能指针-TR1的shared_ptr和weak_ptr使用介绍
- 智能指针shared_ptr的用法
- Effective C++: 探智能指针(std::shared_ptr)和左值引用.
- C++智能指针:auto_ptr、shared_ptr、weak_ptr等
- C++ std::tr1::shared_ptr使用
- 关于C++智能指针的理解auto_ptr
- C++ 11智能指针之shared_ptr
- 详解C++各种智能指针: auto_ptr, shared_ptr, weak_ptr, scoped_ptr
- c++智能指针:auto_ptr shared_ptr
- 智能指针 shared_ptr 的用法误区.
- C++应用系列:用智能指针shared_ptr中引用计数思想进行动态内存管理
- std::auto_ptr boost::shared_ptr智能指针的应用
- c++ 智能指针- shared_ptr和weak_ptr
- C/C++ 日常学习总结(第二十一篇)智能指针shared_ptr