C++ Primer 5e chapter 12

本文介绍了C++中智能指针的概念与应用,包括shared_ptr、unique_ptr等类型的特点及使用场景。探讨了make_shared的用途,以及智能指针如何通过引用计数管理动态分配的内存。此外还讨论了内存分配失败时的处理方式、空悬指针的问题,并简要提到了allocator类的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、只能指针 <memory>,shared_ptr unique_pty weak_ptr;

2、使用 make_shared<T> (args)来动态分配内存,返回shared指针;

3、共享指针,有一个引用计数,计数器变为0则销毁动态对象;主要用于,程序不知道自己使用多少个对象(如STL容器)、程序不知道对象的准确类型、程序需要在多个对象间共享数据; 注意智能指针可以利用类的默认构造、析构、拷贝和赋值构造函数;

4、第三个原因可以理解为,浅拷贝以节省内存;

5、如果不想使用智能指针,可以使用new  delete 直接管理内存;

6、const int * cp = new const int(1023);

7、内存耗尽new会抛出异常,int * p = new (nothrow) int 不会抛出异常,会返回空指针;

8、空悬指针:delete后,指针仍在,且保存着相应的地址,方法是释放内存,将指针置为nullptr;

8、可以使用new 来给智能指针赋值,但是这样无法发挥智能指针的作用,使用make_shared比较合适;

9、虽然智能指针提供了get函数返回一个普通指针,但是这么做风险很大;

10、智能指针只能直接初始化,不能拷贝或者复制初始化;

11、new int[100] ;  delete [] p;

12、动态数组在分配对象数组的时候要求对所有对象进行初始化,如果想在使用时在初始化,可以使用allocator类,帮助把内存分配和对象构造分离开来;

13、allocator<string> alloc ; auto const p = alloc.allocate(n);destroy方法,deallocate方法;

14、同时提供了allocator算法,可以提供迭代器来完成对象的构造工作;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值