【C++】智能指针的设计与实现

本文探讨了C++中的智能指针,旨在解决普通指针可能导致的内存泄露和悬垂指针问题。通过引用计数技术,智能指针能够自动管理对象的生命周期。文章介绍了智能指针的创建、复制、赋值和析构过程,并展示了针对特定对象(如点类)的智能指针设计。最后,提到了C++11标准库提供的智能指针类型。
摘要由CSDN通过智能技术生成

普通指针

  C、C++没有自动内存回收机制,程序员需要手动释放,如果忘记则会导致内存泄露,另外普通指针存在悬垂指针的问题。

何为悬垂指针?

  当有多个指针指向同一个对象时,如果某个指针delete了该对象,对这个指针来说它是明确了它所指的对象被释放了,所以它不会再对此对象进行操作,但是对于剩下的其他指针来说呢?它们还傻傻地指向已经被删除的对象,并随时准备对它进行操作,于是悬垂指针就形成了。

/*************************************************************************
    > File Name: 悬垂指针.cpp
    > Author: Tanswer_
    > Mail: 98duxm@gmail.com
    > Created Time: 2016年10月10日 星期一 19时33分44秒
 ************************************************************************/

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <set>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <stack>
#include <queue>
#include <memory>

using namespace std;

int main()
{
    //shared_ptr<string> p1;

    int *ptr1 = new int(1);
    int *ptr2 = ptr1;
    int *ptr3 = ptr2;

    cout << *ptr1 << endl;
    cout << *ptr2 << endl;
    cout << 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值