您的位置:首页 > 编程语言 > C语言/C++

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时就表示没有对象用这个资源了,就会自动释放资源存储区!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: