使用glibmm/C++需关注引用计数吗?Glib::TimeZone文档存疑咨询
glibmm中Glib::TimeZone文档疑问解答
1. 要不要手动调用g_time_zone_unref()?
完全不用。你已经发现Glib::TimeZone的析构函数里已经自动调用了g_time_zone_unref(),这就是glibmm作为C封装库的意义——帮你自动处理底层C对象的引用计数和生命周期,不用手动去调用C API的释放函数。文档里的那句说明是直接从底层glib的C文档搬过来的,针对的是纯C开发场景,和glibmm的C用法完全不搭,直接忽略就行。
2. 对glibmm文档的态度
你观察得没错,不少glibmm文档是自动从底层glib文档生成的,没完全适配C++封装的特性。给你几个实用建议:
- 优先看glibmm类自身的成员函数说明,别直接套底层C API的规则
- 当文档和实际代码行为冲突时,去看glibmm的源码(像你查析构函数那样)是最靠谱的验证方式
- 你用的glibmm-2.68是稳定版本,核心类的生命周期管理逻辑很成熟,自动处理引用计数的行为可以放心用
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

