查看完整版本: [-- Qt源码中关于D指针和Q指针相关问题 --]

QTCN开发网 -> Qt基础编程 -> Qt源码中关于D指针和Q指针相关问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

江江江江江江 2018-05-25 10:02

Qt源码中关于D指针和Q指针相关问题


如题,阅读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是处理指针释放的流程? 望解答

maxlogo 2018-05-25 14:27
q指针不用释放,因为仅仅是这样子q_ptr = this;
d指针会由QScopedPointer智能指针进行释放
而对象本身由Qt的对象树管理机制释放或者由用户自己释放

江江江江江江 2018-05-25 16:59
maxlogo:q指针不用释放,因为仅仅是这样子q_ptr = this;
d指针会由QScopedPointer智能指针进行释放
而对象本身由Qt的对象树管理机制释放或者由用户自己释放 (2018-05-25 14:27) 

嗯嗯 大致理解了 感谢

jigetage 2018-05-26 16:34
maxlogo:q指针不用释放,因为仅仅是这样子q_ptr = this;
d指针会由QScopedPointer智能指针进行释放
而对象本身由Qt的对象树管理机制释放或者由用户自己释放 (2018-05-25 14:27) 

厉害了


查看完整版本: [-- Qt源码中关于D指针和Q指针相关问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled