C++STL之memory

12 篇文章 0 订阅

allocator,分配内存但不进行任何初始化,很少用

shared_ptr 共享指针,初始化后同指针一样指向一个对象,成员函数use_count() 表示有多少共享指针指向对象,每当shared_ptr被赋值、拷贝的时候,use_count()加1,一个共享指针不再指向对象时,use_count减1。以这种方式构造的,指向同一个对象的指针,use_count是共享的。

不要使用同一个对象初始化多个共享指针。一个对象只能初始化一个共享指针。其成员函数get()可返回对象类型的指针,也不要用这个指针初始化其他共享指针。

(如果这样做了,会出现两个共享指针指向同一个对象,但计数都为1。一个共享指针已经释放对象时,另一个共享指针的use_count()并不会减少,仍表示该对象存在)

unique_ptr 唯一指针,同一时刻只能有一个unique_ptr指向对象。显然unique_ptr是无法赋值和拷贝的,可以用move移交对象。函数unique_ptr.release()释放对对象的引用,返回对象的指针。

weak_ptr 弱指针,可以被weak_ptr和shared_ptr赋值,但不会增加计数,对对象只读,当对象被释放后,weak_ptr被置为nulllptr。可用lock()得到对象的shared_ptr,如果对象已经释放,返回一个空的shared_ptr。expired()检查对象是否释放

onwer_before(ptr),判断this和ptr是否指向同一对象,比如this指向类,ptr指向类的成员。

addressof(ptr),获取ptr所指对象的实际地址,感觉是专门为重载了&符号的对象设计的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值