首页| 论坛| 消息

标题:Qt源码中关于D指针和Q指针相关问题
作者:江江江江江江
日期:2018-05-25 10:02
内容:

如题,阅读Qt源码中,遇到关于D指针和Q指针的问题
(主类)QObject中存有d_ptr
(数据对象)QObjectPrivate中存有q_ptr(q_ptr存于父类QObjectData中)
则此时出现互相引用的关系,既如下所示。
QObject
d_ptr = QObjectPrivate*
QObjectPrivate
q_ptr = QObject*
1.那Qt是如何处理这2者的关系而保证双方都可以正确释放呢?
2.Qt是处理指针释放的流程? 望解答


#1 [maxlogo 05-25 14:27]
q指针不用释放,因为仅仅是这样子q_ptr = this;
d指针会由QScopedPointer智能指针进行释放
而对象本身由Qt的对象树管理机制释放或者由用户自己释放
#2 回 maxlogo 的帖子 [江江江江江江 05-25 16:59]
maxlogo:q指针不用释放,因为仅仅是这样子q_ptr = this;
d指针会由QScopedPointer智能指针进行释放
而对象本身由Qt的对象树管理机制释放或者由用户自己释放 (2018-05-25 14:27) 
嗯嗯 大致理解了 感谢
#3 回 maxlogo 的帖子 [jigetage 05-26 16:34]
maxlogo:q指针不用释放,因为仅仅是这样子q_ptr = this;
d指针会由QScopedPointer智能指针进行释放
而对象本身由Qt的对象树管理机制释放或者由用户自己释放 (2018-05-25 14:27) 
厉害了

回复 发表
主题 版块