日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

句柄和指針有什么區(qū)別

句柄和指針有什么區(qū)別

句柄和指針有什么區(qū)別


句柄實(shí)際上是一種指向某種資源的指針 , 但與指針又有所不同:指針對(duì)應(yīng)著一個(gè)數(shù)據(jù)在內(nèi)存中的地址,得到了指針就可以自由地修改該數(shù)據(jù) 。Windows并不希望一般程序修改其內(nèi)部數(shù)據(jù)結(jié)構(gòu),因?yàn)檫@樣太不安全 。所以Windows給每個(gè)使用GlobalAlloc等函數(shù)聲明的內(nèi)存區(qū)域指定一個(gè)句柄 , 平時(shí)你只是在調(diào)用API函數(shù)時(shí)利用這個(gè)句柄來(lái)說(shuō)明要操作哪段內(nèi)存 。當(dāng)你需要對(duì)某個(gè)內(nèi)存進(jìn)行直接操作時(shí),可以使用GlobalLock鎖住這段內(nèi)存并獲得指針來(lái)直接進(jìn)行操作 。
句柄到底是什么句柄的分類(lèi)句柄就是個(gè)數(shù)字,一般和當(dāng)前系統(tǒng)下的整數(shù)的位數(shù)一樣,比如32bit系統(tǒng)下就是4個(gè)字節(jié) 。這個(gè)數(shù)字是一個(gè)對(duì)象的唯一標(biāo)示,和對(duì)象一一對(duì)應(yīng) 。這個(gè)對(duì)象可以是一個(gè)塊內(nèi)存 , 一個(gè)資源,或者一個(gè)服務(wù)的context(如 socket,thread)等等 。這個(gè)數(shù)字的來(lái)源可以有很多中,只要能保證和它代表的對(duì)象保持唯一對(duì)應(yīng)就可以,比如可以用內(nèi)存地址,也可以用句柄表的序號(hào),或者干脆用一個(gè)自增ID,再或者用以上的值去異或一個(gè)常數(shù) 。
傳統(tǒng)上操作系統(tǒng)內(nèi)核和系統(tǒng)服務(wù)API都是 C 語(yǔ)言接口的,但是其內(nèi)部設(shè)計(jì)理念上又是OO的,所以有對(duì)象概念卻沒(méi)有對(duì)應(yīng)的語(yǔ)言語(yǔ)法支持 。句柄的作用就是在 C 語(yǔ)言環(huán)境下代替 C++ 的對(duì)象指針來(lái)用的 。
創(chuàng)建句柄就是構(gòu)造 , 銷(xiāo)毀句柄就是析構(gòu),用句柄調(diào)用函數(shù)相當(dāng)于傳入this指針 。如果有系統(tǒng)API是C++ 接口的 , 那么就沒(méi)有句柄了 , 而是某個(gè)接口指針,IXXXPtr之類(lèi)的,比如Windows的com ptr 。
【句柄和指針有什么區(qū)別】

    推薦閱讀