c++中的智能指针是什么
2014-01-13 11:21
267 查看
c++程序员一个头疼的问题就是用指针开空间与销毁空间。 试着执行下面一段代码: /*******************************/ class A { public: int *q; A(int *p){q=p;} ~A(){delete q;} }; class B { public: int *q; B(int *p){q=p;} ~B(){delete q;} }; #include<iostream> #include<string> using namespace std; int main() { int n=3; A a(&n); B b(&n); return 0; } /*******************************/ 如何,出错了吧? 这就是因为A对象析构时已经销毁了n的内存空间,然后B的指针就成了空的,B再析构就出错了。 智能指针的出现主要是为了解决类似问题,具体解决方法如楼上所说,引入计数器,确保最多一个析构时删除指针空间。 当有几个对象 共同用一个资源时,则它们同时指向了这个资源,如果用普通的指针,则在其中一个对象析构时就会将这个共用的资源销毁,有了智能指针就不用担心,它里面有对象计数,代表有几个对象在用它,销毁一个就减1,直到 为0,为0时就表示没有对象用这个资源了,就会自动释放资源存储区!
相关文章推荐
- [转载]C++的智能指针auto_ptr做了些什么
- C++几个技巧:智能指针在消息传递中的使用,元组,及lambda删除器
- c++中的内存分配和智能指针
- c++ 智能指针用法详解
- C++语法基础--智能指针
- C++ 智能指针详解
- C++ 智能指针Auto_PTR 分析http://www.cnblogs.com/skyofbitbit/p/3649776.html
- 智能指针auto_prt的使用(c++学习笔记)
- c++智能指针详解
- C++ 智能指针简单实现
- C++ 智能指针详解
- C++ 智能指针详解
- c++智能指针的使用
- c++ 一种智能指针的实现
- c++智能指针,从源码开始认识
- c++ 智能指针—— c++复习(八)
- [转]C++智能指针(auto_ptr)详解
- c++中的智能指针auto_ptr解析
- C++(浅析)智能指针及C#GC(垃圾回收机制)分析[图]
- C++中智能指针的设计和使用