使用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.pswp.cn/news/276302.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/276302.shtml
英文地址,請注明出處:http://en.pswp.cn/news/276302.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python結課報告_Python數據分析課程到底是學什么內容的?

2020年12月4日,博為峰旗下學掌門召開了《Python 商業(大)數據分析師》新課程發布會。據悉,此次發布會上發布的《Python 商業(大)數據分析師》課程是在原《數據分析師》課程上進行了全面升級。在發布會上博為峰副總經理王琰表示,在未來學掌門作…

linux禁止root用戶直接登錄sshd并修改默認端口

轉載鏈接:http://jingyan.baidu.com/article/a681b0de3a657c3b184346d9.html linux最高權限用戶root,默認可以直接登錄sshd。為了提高服務器的安全度,需要對它進行禁止,使得攻擊者無法通過暴力破解來獲取root權限。 1,新建一個用…

面試官問:能否模擬實現JS的bind方法(高頻考點)

可以點擊上方的話題JS基礎系列,查看往期文章寫于2018年11月21日,發布在掘金閱讀量1.3w前言這是面試官問系列的第二篇,旨在幫助讀者提升JS基礎知識,包含new、call、apply、this、繼承相關知識。面試官問系列文章如下:感…

推薦一個ASP.NET的資源網站

推薦一個ASP.NET的資源網站:ASP.NET屋-專業的ASP.NET學習,ASP.NET源碼,ASP.NET演示,MVC,Silverlight,JQuery,EXTJS,軟件設計網站 http://www.aspx58.com.cn/ 轉載于:https://www.cnblogs.com/yuyichen/archive/2009/11/26/1611682.html

連續投影算法_中航國畫榮獲“2020 IAV國際視聽嘉年華” 大屏幕投影顯示行業三大獎項!...

近日,“2020IAV國際視聽嘉年華”在深圳灣創新生態園隆重舉行,航空工業上電下屬子公司中航國畫作為2020年迪拜世博會中國館官方合作伙伴應邀參加此次高峰論壇,并在展會期間憑借4K系列雙色激光工程投影機、LP160UL系列超高亮度雙色激光工程投影…

Linux 系統備份恢復工具 SYSTEM-RESCUE-CD 的使用

測試系統:linux-debian 備份系統 1、插入dd有systemrescuecd-x86-4.0.1.iso的系統備份恢復U盤; 2、開機按DEL進入BIOS,設置BOOT為USB-HDD啟動。Save&Exit; 3、進入備份恢復系統界面:----------------------------…

CMDB功能分析與實現方案

CMDB功能分析與實現方案 CMDB系統的主要功能 1.用戶管理,記錄測試,開發,運維人員的用戶表 2.業務線管理,記錄業務的詳情 3.項目管理,指定此項目屬于那一條業務線 4.應用管理,指定此應用的開發人員 5.主機管理,記錄主機管理員,連接的網絡設備,存儲,云主機,物理主機等信息 6.主機…

感冒

看好這個網頁,你的感冒就好了轉載于:https://www.cnblogs.com/baoguo/archive/2009/11/27/1612308.html

python numpy矩陣索引_Numpy中的矩陣索引

索引后查看形狀:In [295]: Anp.matrix([1,2,3])In [296]: A.shapeOut[296]: (1, 3)In [297]: A[0]Out[297]: matrix([[1, 2, 3]])In [298]: A[0].shapeOut[298]: (1, 3)這種行為的關鍵是np.matrix始終是2d,所以即使選擇一行(A[0,:]),結果仍然…

他的前端焦慮:30歲以后的前端路怎么走? 你想過嗎~

馬云曾說,員工的離職原因很多,唯兩點最真實:一是錢,沒給到位;二是心,委屈了。當時間來到了年末,離職、跳槽、年終獎又成了年終熱詞,而此時辭職好似成為了一場勇敢者的游戲&#xff0…

不可忽略的apache 的 Keep Alive

轉載鏈接:http://hi.baidu.com/jx_iben/item/d5fe91feed74495ec9f337f1 在網頁開發過程中,Keep-Alive是HTTP協議中非常重要的一個屬性。大家知道HTTP構建在TCP之上。在HTTP早期實現中,每個HTTP請求都要打開一個socket連接。這種做效率很低&am…

碼云 Gitee 新增倉庫訪問之 IP 白名單功能

碼云企業版上線 IP 白名單功能,該功能主要用于企業禁止非指定 IP 訪問代碼倉庫。如下圖所示:使用方法:進入企業控制面板 -> 管理 -> 安全設置添加允許訪問 Git 倉庫的 IP 地址啟用安全選項:只允許在信任范圍內推拉代碼其他關…

oracle 實時查詢最耗CPU資源的SQL語句

1. 先通過top命令查看產用資源較多的spid號 2.查詢當前耗時的會話ID,用戶名,sqlID等:select sid,serial#,machine,username,program,sql_hash_value,sql_id, to_char(logon_time,yyyy/mm/dd hh24:mi:ss) as login_time from v$sessionw…

福利 | 抽獎送現金送書《Web前端工程師修煉之道》

很多關注了我的公眾號的粉絲可能都不知道我,趁這次機會簡單介紹下。你好,我是若川。江西人,某不那么知名的陶瓷大學畢業生,目前在杭州從事前端開發工作。常以若川為名混跡于江湖。更詳細的可以點擊關于我我歷時一年才寫了《學習源…

jQuery 1.9.1中live()變更

轉載鏈接:http://www.360doc.com/content/13/1222/22/14022539_339358149.shtml 開始的時候在jQuery.1.7.1中使用了.live()覺得很好用,特別是在綁定事件之后再加入的元素的事件綁定上很方便(第一次live之后以后添加的元素就不需要綁定啦) 后來jQuery更…

蒙特卡洛方法_基本理論-蒙特卡洛方法與定積分

全球圖形學領域教育的領先者、自研引擎的倡導者、底層技術研究領域的技術公開者,東漢書院在致力于使得更多人群具備內核級競爭力的道路上,將帶給小伙伴們更多的公開技術教學和視頻,感謝一路以來有你的支持。我們正在用實際行動來幫助小伙伴們…

WebServices 基礎知識

1. 有關生存期的補充正常情況下,每次調用 WebMethod,服務器都會創建一個新的 WebService 對象,即便客戶端使用同一個代理對象多次調用 WebMethod。而我們一旦調用了有緩存標記的 WebMethod,只要未超出緩存期,WebServic…

sass和compass基礎用法

一、基本命令 sass都是通過gem安裝,以下是一些基礎的命令移除ruby的鏡像地址 gem sources --remove https://rubygems.org/添加淘寶的鏡像 gem source -a http://ruby.taobao.org查看鏡像 gem source -v單文件轉換命令 sass style.scss style.css單文件監聽命令&am…

字節面試官:如何實現Ajax并發請求控制

偷偷告訴你,點此抽獎送紅包還送3本比紅寶書還貴的書實現一個批量請求函數 multiRequest(urls, maxNum),要求如下: ? 要求最大并發數 maxNum ? 每當有一個請求返回,就留下一個空位,可以增加新的請求 ? 所有請求完成后…

Jquery 中 ajaxSubmit使用講解

轉載鏈接&#xff1a;http://blog.csdn.net/h70614959/article/details/8810270 1 引入依賴腳本 <script type"text/javascript" src"/js/jquery/jquery.form.js"></script> //ajaxForm 依賴腳本<script type"text/javascript"…