首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
shared_ptr 怎么知道跟它共享对象的指针释放了
[问答题]
shared_ptr 怎么知道跟它共享对象的指针释放了
添加笔记
求解答(0)
邀请回答
收藏(33)
分享
纠错
9个回答
添加回答
3
在写面经的小饼干很坚定
shared_ptr 内部维护着一个引用计数器,用于记录有多少个 shared_ptr 共享同一个对象。每当创建一个新的 shared_ptr 对象时,该计数器就会加 1,当 shared_ptr 对象被销毁时,计数器就会减 1。当计数器的值变为 0 时,表示没有任何 shared_ptr 对象引用该对象,此时 shared_ptr 会自动释放该对象的内存。因此,当跟 shared_ptr 共享同一个对象的所有 shared_ptr 对象都被销毁时,shared_ptr 就会知道该对象的指针已经被释放了。这种机制可以避免内存泄漏和悬空指针等问题。
发表于 2023-07-24 20:58:53
回复(0)
1
Mr☆Rabbit♂
引用计数,有新智能指针对象引用,计数+1,有智能指针结束生命周期,计数-1,计数为0时,表示所有共享对象的指针都已经释放。
发表于 2023-08-15 07:05:43
回复(0)
1
学不明白
当堆空间对应的整形值为 0 时,即表明不再有对象使用它,该堆空间就会被释放掉。
发表于 2022-07-31 13:29:26
回复(0)
0
_helios_
share_ptr 底层是采用引用计数的方式实现的,引用计数用于记录有多少个 shared_ptr 共享同一个对象。智能指针在申请堆内存空间的同时,会为其配备一个整形值(初始值为 1),每当有新share_ptr对象使用此堆内存时,该值 +1;反之,每当使用此堆内存的对象被释放时,该值减 1。当堆空间对应的整形值为 0 时,即表明不再有任何share_ptr对象使用它,该堆空间就会被释放掉。当最后一个指针过期时,才调用 delete。
发表于 2024-05-21 15:57:51
回复(0)
0
雏鹰划空
模板类的内部维护一个计数器,当实例化shared_ptr<>的时候,计数器初始被设置为1。如果,此对象被复制、赋值等,计数器就会加1。当shared_ptr对象被销毁的时候,计数器减1。当计数器的值为0的时候,表明没有对象使用它了,就把该堆的空间释放掉。
发表于 2023-11-11 16:39:58
回复(0)
0
cppers
share_ptr内部维护了一个引用计数的指针变量,每当有一个share_ptr指向该对象时,引用计数就会加一,反而减一,当share_ptr检测到这个引用计数为0的时候就会释放掉这个对象的指针
发表于 2023-09-14 10:41:00
回复(0)
0
踏实的懒羊羊说我这儿没问题啊
引用计数器,当堆内存的对象被释放时,计数器就会减一,当计数器为0时说明该空间已经被完全释放
发表于 2023-07-10 17:50:49
回复(0)
0
三川仨卅
shared指针内部有一个计数器,当计数器的引用数减一的时候,就说明有一个指向共享对象的指针被释放了。
发表于 2023-07-09 22:32:59
回复(0)
0
别说天会黑
计数
发表于 2022-06-28 10:12:59
回复(1)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
C++
上传者:
real19931
难度:
9条回答
33收藏
1462浏览
热门推荐
相关试题
运行 ldd hello 可以得到...
百度
C++
评论
(3)
1.该校教师最多的是哪一年?( ...
资料分析
言语理解与表达
资料分析
评论
(1)
有同事不完成任务,影响力进度,你怎...
业务综合
评论
(1)
你身边有哪些人还没有使用滴滴,你认...
用户研究
评论
(1)
怎么做一个需求
需求分析
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题