使用C语言进行面向对象的开发--GObject入门[5]

转载请注明出处 blog.csdn.net/pingf0 或www.cnblogs.com/pingf

 

 

接上文
 这一部分简要介绍下类的析构,或者成为终结。
 
还是多说几句,也算是对前文的补充
 1.生成一个类是由父到子,析构的时候自然与之相对是由子到父。
 2.GObject的内存管理并没有采用垃圾回收的方式【JAVA就采用此方式】,而是采用了引用计数的方式。
  具体垃圾回收是怎么回事儿,本人还不清楚,所以就不提了。引用计数还了解一些,
  但也不是此处的重点【哎,又写了点废话】。主要要补充的是如果要在一个对象中包含另一个对象,
  需要在初始话时ref一下,析构的时候再将其unref.
 3.GObject的析构其实分为两步,一步是dispose【曝光】,另一步是finalize【终结】。分别用来unref和free对象。
 
 下面给出dispose和finalize的代码
ContractedBlock.gifExpandedBlockStart.gifCode
static void
jc_boy_dispose (GObject 
*gobject)
{
  JcBoy 
*self = JC_BOY (gobject);

  
/* 
   * In dispose, you are supposed to free all types referenced from this
   * object which might themselves hold a reference to self. Generally,
   * the most simple solution is to unref all members on which you own a 
   * reference.
   
*/

  
/* dispose might be called multiple times, so we must guard against
   * calling g_object_unref() on an invalid GObject.
   
*/
/////
/////
  // if (self->priv->an_object)
  
//  {
  
//   g_object_unref (self->priv->an_object);

  
//   self->priv->an_object = NULL;
  
// }

  
/* Chain up to the parent class */
  G_OBJECT_CLASS (jc_boy_parent_class)
->dispose (gobject);
}





static void
jc_boy_finalize(GObject 
*gobject)
{
  JcBoy 
*self =JC_BOY (gobject);

  g_free (self
->priv->hobby);
g_free (self
->priv->name);

  g_print(
"boy finalized !\n");

  
/* Chain up to the parent class */
  G_OBJECT_CLASS (jc_boy_parent_class)
->finalize (gobject);
}
就这么简单【其实很麻烦吧。。。。XD】,但这些还不够,别忘了前面我们注册类用的是简化的G_DEFINE_TYPE,
而其实调用的是g_type_register_simple,这个函式里面里并没有注册次够用的函式,
所以在初始话时还要在显示声明下曝光和终结用的函式。
 
 
可以在class_init中声明
static void
jc_boy_class_init (JcBoyClass *klass)
{
……
    GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
    gobject_class->dispose=jc_boy_dispose;
    gobject_class->finalize=jc_boy_finalize;
……
}
 

 

转载于:https://www.cnblogs.com/pingf/archive/2009/11/23/1609046.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276302.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面试官问:能否模拟实现JS的bind方法(高频考点)

可以点击上方的话题JS基础系列,查看往期文章写于2018年11月21日,发布在掘金阅读量1.3w前言这是面试官问系列的第二篇,旨在帮助读者提升JS基础知识,包含new、call、apply、this、继承相关知识。面试官问系列文章如下:感…

连续投影算法_中航国画荣获“2020 IAV国际视听嘉年华” 大屏幕投影显示行业三大奖项!...

近日,“2020IAV国际视听嘉年华”在深圳湾创新生态园隆重举行,航空工业上电下属子公司中航国画作为2020年迪拜世博会中国馆官方合作伙伴应邀参加此次高峰论坛,并在展会期间凭借4K系列双色激光工程投影机、LP160UL系列超高亮度双色激光工程投影…

CMDB功能分析与实现方案

CMDB功能分析与实现方案 CMDB系统的主要功能 1.用户管理,记录测试,开发,运维人员的用户表 2.业务线管理,记录业务的详情 3.项目管理,指定此项目属于那一条业务线 4.应用管理,指定此应用的开发人员 5.主机管理,记录主机管理员,连接的网络设备,存储,云主机,物理主机等信息 6.主机…

他的前端焦虑:30岁以后的前端路怎么走? 你想过吗~

马云曾说,员工的离职原因很多,唯两点最真实:一是钱,没给到位;二是心,委屈了。当时间来到了年末,离职、跳槽、年终奖又成了年终热词,而此时辞职好似成为了一场勇敢者的游戏&#xff0…

码云 Gitee 新增仓库访问之 IP 白名单功能

码云企业版上线 IP 白名单功能,该功能主要用于企业禁止非指定 IP 访问代码仓库。如下图所示:使用方法:进入企业控制面板 -> 管理 -> 安全设置添加允许访问 Git 仓库的 IP 地址启用安全选项:只允许在信任范围内推拉代码其他关…

福利 | 抽奖送现金送书《Web前端工程师修炼之道》

很多关注了我的公众号的粉丝可能都不知道我,趁这次机会简单介绍下。你好,我是若川。江西人,某不那么知名的陶瓷大学毕业生,目前在杭州从事前端开发工作。常以若川为名混迹于江湖。更详细的可以点击关于我我历时一年才写了《学习源…

蒙特卡洛方法_基本理论-蒙特卡洛方法与定积分

全球图形学领域教育的领先者、自研引擎的倡导者、底层技术研究领域的技术公开者,东汉书院在致力于使得更多人群具备内核级竞争力的道路上,将带给小伙伴们更多的公开技术教学和视频,感谢一路以来有你的支持。我们正在用实际行动来帮助小伙伴们…

字节面试官:如何实现Ajax并发请求控制

偷偷告诉你,点此抽奖送红包还送3本比红宝书还贵的书实现一个批量请求函数 multiRequest(urls, maxNum),要求如下: • 要求最大并发数 maxNum • 每当有一个请求返回,就留下一个空位,可以增加新的请求 • 所有请求完成后…

制造行业电子化签约及印控一体化解决方案

当生产“智造化”、营销“数字化”成为趋势,生产制造型企业如何实现产品生产-销售全流程提速降本?生产制造型企业为了在生产、营销环节降低成本、提升效率,经营模式上常有如下特征:• 原料导向,多点协同生产&#xff1…

一起手写Vue3核心模块源码,掌握阅读源码的正确方法

最近和一个猎头聊天,说到现在前端供需脱节的境况。一方面用人方招不到想要的中高级前端,另一方面市场上有大量初级前端薪资要不上价。特别是用 Vue 框架的,因为好上手,所以很多人将 Vue 作为入门框架,但学得深的人并不…

2020 前端技术发展回顾

大家好,我是若川,今天给大家分享一篇来自阿里妈妈前端快爆的好文。另外,偷偷告诉你,截止今晚9点 点此抽奖送红包还送3本比红宝书还贵的书可以点击文章末尾阅读原文直达知乎链接,以下是正文2020 终究是一个不平凡的一年…

第一章知识点

第一章知识点 一:SQL语言 1,结构化查询语言,是关系数据库的标准语言 2,分类: 2.1:数据操作语言:DML;包括:即增删查改;insert,update,d…

2021年,推荐这几个优质公众号碎片化学习

2021 年了,前端技术日新月异,发展迅速,前端公众号是不是感觉越来越多了?在着辞旧迎新之际,这里盘点几个前端开发工程师 2021 年必须关注的优质公众号,希望对你有所帮助。大家可以像我一样,利用碎…

阿里云插件新版发布,多特性助力提升开发者体验

好消息!阿里云 Cloud Toolkit 新版本于近日正式发布,推出了面向 IntelliJ 和 Eclipse 两个平台的新款插件,多个重大特性,持续提升开发者体验,本文将带大家快速预览该新版本。 本文只挑选下面三个重大特性进行解读&…

上一轮中奖信息公布

大家好,我是若川,抽奖活动其实挺耗时耗力的,尤其是留言和在看抽奖。比如我这篇文章写完就已经23:50了。特别想说的是:有126人点击了在看,但我的好友展示只有93人在看。说明还有30多人点击了在看,但忘记加我…

CentOS7Jenkins安装

2019独角兽企业重金招聘Python工程师标准>>> CentOS7Jenkins安装 2017年05月07日 20:20:32 申明霜 阅读数:13945 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sms15732621690/article/details/713…

2020 全球 JS 现状调查报告

大家好,我是若川。偷偷告诉你,今天推文的第二条是在我的公众号回复「网盘」免费领取百度网盘会员,欢迎大家分享转发。给大家分享一篇好文,往期类似好文:2020 前端技术发展回顾2020年大前端技术趋势解读以下是正文&…

ie兼容响应式布局的实现总结 和 针对ie浏览器的CSS

参考链接:http://zhidao.baidu.com/link?urlbQioDKMnG_eQoE6dCxzd2hPtMyiB7phu6hBdOupn1Pjk1hV-ItXFZS5GDUBoH5qrfi9LXkUoSciXTiGN36G6LK 参考链接:http://blog.sina.com.cn/s/blog_601b97ee0101aszo.html ie浏览器hack .demo {padding:10px;padding:9…

group by 保留哪一条数据_使用R语言绘制一维数据统计图总结

加载数据 绘制茎叶图 绘制直方图 绘制概率密度曲线 绘制小提琴图 绘制箱线图 绘制小提琴图箱线图 集中趋势统计 分散程度 apply的使用加载数据模拟数据下载library(tidyverse) cjb <- read.csv("/home/wy/Downloads/cjb.csv",header TRUE,stringsAsFactors FALS…

npm安装和Vue运行

一、开始&#xff1a; 下载地址&#xff1a;http://nodejs.cn/download/ 下载安装&#xff1a; 直到 二、打开CMD,检查是否正常 在安装目录里新增两个文件夹 然后运行命令&#xff1a;如下图&#xff1a; npm config set prefix "D:\InstallSoftWare\nodejs\node_global&q…