作业帮 > 综合 > 作业

关于智能指针的问题 auto_ptr c++

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/24 13:28:09
关于智能指针的问题 auto_ptr c++
我想问下 我们什么时候用这个指针 我看了半天还不知道怎么用 能给个简单的例子 充分说明它的用途么
智能指针的最主要的作用防止裸指针带来的很多问题,如指向无效内存的指针,或者可能出现的内存泄露.
其实我不建议你看这个auto_ptr,因为在实际开发中,很少使用这个,而是使用boost库的shared_ptr,比auto_ptr更好用,更安全.如果你学会了shared_ptr,自然也会用auto_ptr了.并且vs2010里已经提供了与boost库一样的shared_ptr.
你想知道智能指针的作用,我给你举一个反例:
class A
{
private:
int* ptr;//一个裸指针成员
public:
A(){ ptr = new int[20]}
~A(){delete[] ptr}
}
如果出现下面的代码
A a1;//对象a1
.
A a2 = a1;//现在a2和a1相同了,也就意味着a2.ptr 与a1.ptr相同.
.
那么当a1被析构的时候,就会delete掉ptr指向的内存,可是目前这个指针还保存在a2里,意味着a2中的ptr指向无效的内存了,如果a2继续使用ptr,程序基本就会崩溃了,因为有效的内存已被a1析构了.
解决办法就是把上面的裸指针换成智能指针,这就是智能指针可以解决的问题之一.