VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 669|回复: 3

一个非com环境下的生命周期问题

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-1-22 02:20:01 | 显示全部楼层 |阅读模式
类A 有个 成员,它是类B的指针
A{
A(B* pB1){pB = pB1;}
B* pB;
}

如果下面一段代码
B* pB = new B();
A oA = A(pB);
delete pB;
最后1句结束后,oA里的pB指向无效的地址。我的疑问时在非com环境下,怎么维护A和他的成员 B指针之间的关系,保证A里的B指针指向始终有效,在com环境下,可以用引用计数达到目的,难道在非com环境下,一个类去hold另外一个类的指针不是很危险?
回复

使用道具 举报

0

主题

57

帖子

27.00

积分

新手上路

Rank: 1

积分
27.00
发表于 2020-1-31 17:54:01 | 显示全部楼层
在C/C++中,这是程序员的问题,在JAVA DotNet中,这是系统的问题
回复

使用道具 举报

0

主题

36

帖子

22.00

积分

新手上路

Rank: 1

积分
22.00
发表于 2020-1-31 20:00:01 | 显示全部楼层
使用boost::shared_ptr可以避免这种麻烦。
www.boost.org/libs/smart_ptr/shared_ptr.htm
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-2-22 01:45:01 | 显示全部楼层
shared_ptr 和auto_ptr 功能有什么区别呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表