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++中的智能指针是什么
最新推荐文章于 2025-02-10 21:34:33 发布