成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

c++中句柄的理解-創(chuàng)新互聯(lián)

小編給大家分享一下c++中句柄的理解,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

十余年的紫云網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都全網(wǎng)營銷的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整紫云建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“紫云網(wǎng)站設(shè)計(jì)”,“紫云網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

這個(gè)句柄只是從英文handle翻譯過來的,只問句是什么意思難以解釋,這個(gè)是我從別人的空間收集的信息。

功能上對(duì)句柄的理解:

什么是"句柄"(handle),handle的本意是把柄,把手的意思。是你與操作系統(tǒng)打交道的東東。

舉個(gè)通俗的例子,比如你考上了大學(xué),入學(xué)后,學(xué)校(操作系統(tǒng))會(huì)給你一個(gè)學(xué)生證號(hào)。

注意,這個(gè)號(hào)碼是學(xué)校指定的,你無法自選。

有了這個(gè)號(hào)碼(學(xué)生證,假設(shè)一證多用)享受學(xué)校提供的服務(wù):

如你就可以去圖書館借書,去食堂吃飯,去教室上課等等。

但你不能到食堂里買啤酒,因?yàn)閷W(xué)校不允許這種服務(wù)。

而在計(jì)算機(jī)中系統(tǒng)提供的服務(wù)就是API調(diào)用,你有了HANDLE,就可以理直氣壯地向系統(tǒng)提出調(diào)用API的服務(wù)。

而指針的權(quán)力就大多了,有了指針你可以到處去喝酒,打架,學(xué)校(操作系統(tǒng))管不著,所以句柄和指針的區(qū)別在于句柄指針調(diào)用系統(tǒng)提供的服務(wù)。

而句柄雖然是一個(gè)能相互區(qū)別的號(hào)碼,但與我們普通的ID號(hào)又有區(qū)別,普通的ID號(hào)是可以由程序員自己定義的,而句柄不行,它是對(duì)象生成是系統(tǒng)指定的,是為了區(qū)別系統(tǒng)中存在的各個(gè)對(duì)象,這個(gè)句柄不是由程序員符給的。

概念上對(duì)句柄的理解

1、句柄,是整個(gè)windows編程的基礎(chǔ),一個(gè)句柄是指使用的一個(gè)的整數(shù)值,是指一個(gè)四字節(jié)長的數(shù)值,用于標(biāo)志應(yīng)用程序中的不同對(duì)象和同類對(duì)象中的不同的實(shí)例,諸如,一個(gè)窗口,按鈕,圖標(biāo),滾動(dòng)條,輸出設(shè)備,控件或者文件等。

應(yīng)用程序能夠通過句柄訪問相應(yīng)的對(duì)象的信息。

2、句柄不是一個(gè)指針,程序不能利用它句柄來直接閱讀文件中的信息。

如果句柄不用在I/O文件中,它是毫無用處的。

3、句柄是windows用來標(biāo)志應(yīng)用程序中建立的或是使用的整數(shù),windows使用了大量的句柄來來標(biāo)志很多對(duì)象。

機(jī)制上對(duì)句柄的理解

前面的分析很經(jīng)典,但我認(rèn)為有一點(diǎn)必須指出的。如果不對(duì),請(qǐng)各位指證。

句柄是指針,一點(diǎn)不假,但是這個(gè)指針又與C中的指針有不同之處。

因?yàn)閃indows是一個(gè)多任務(wù)的系統(tǒng),其內(nèi)存是可以移動(dòng)的,這樣的話如果某一時(shí)刻有一個(gè)指針指向一塊內(nèi)存,之后的某個(gè)時(shí)刻卻被系統(tǒng)移走了,如果你再用這個(gè)指針的話就會(huì)出錯(cuò)。

為了解決這一問題,windows在系統(tǒng)專區(qū)開一塊內(nèi)存用于存放句柄,這個(gè)句柄的值就是一個(gè)地址,當(dāng)這一塊內(nèi)存被移走后,windows就修改這個(gè)句柄的值,再訪問這塊內(nèi)存時(shí),句柄的值總是有效的。

正因?yàn)檫@樣當(dāng)你使用GlobalAlloc分配的內(nèi)存時(shí),如果你指定這塊內(nèi)存的屬性是固定的,那么它的返回值可以直接給一個(gè)指針,如果是可以移動(dòng)的,返回值就必須給一個(gè)句柄,你就必須先GlobalLock后才能使用。

其實(shí),句柄是一個(gè)指向指針的指針。即:

在windows程序設(shè)計(jì)中,句柄僅是一個(gè)應(yīng)用程序用來識(shí)別某些事情的數(shù)字,如果想更透徹一點(diǎn)地認(rèn)識(shí)句柄,我可以告訴大家,句柄是一種指向指針的指針。

我們知 道,所謂指針是一種內(nèi)存地址。應(yīng)用程序啟動(dòng)后,組成這個(gè)程序的各對(duì)象是住留在內(nèi)的 。如果簡單地理解,似乎我們只要獲知這個(gè)內(nèi)存的首地址,那么就可以隨時(shí)用這個(gè)地址訪問對(duì)象。

但是,如果您真的這樣認(rèn)為,那么您就大錯(cuò)特錯(cuò)了。

我們知道,Windows是一個(gè)以虛擬內(nèi)存為基礎(chǔ)的操作系統(tǒng)。在這種系統(tǒng)環(huán)境下,Windows內(nèi)存管理器經(jīng)常在內(nèi)存中來回移動(dòng)對(duì)象,依此來滿足各種應(yīng)用程序的內(nèi)存需要。

對(duì)象被移動(dòng)意味著它的地址變化 了。如果地址總是如此變化,我們?cè)摰侥睦锶フ以搶?duì)象呢?

為了解決這個(gè)問題,Windows操作系統(tǒng)為各應(yīng)用程序騰出一些內(nèi)存儲(chǔ)地址,用來專門 登記各應(yīng)用對(duì)象在內(nèi)存中的地址變化,而這個(gè)地址(存儲(chǔ)單元的位置)本身是不變的。

Windows內(nèi)存管理器在移動(dòng)對(duì)象在內(nèi)存中的位置后,把對(duì)象新的地址告知這個(gè)句柄地址來保存。

這樣我們只需記住這個(gè)句柄地址就可以間接地知道對(duì)象具體在內(nèi)存中的哪個(gè)位置。

這個(gè)地址是在對(duì)象裝載(Load)時(shí)由系統(tǒng)分配給的,當(dāng)系統(tǒng)卸載時(shí)(Unload)又釋放給系統(tǒng) 。句柄地址(穩(wěn)定)→記載著對(duì)象在內(nèi)存中的地址→對(duì)象在內(nèi)存中的地址(不穩(wěn)定) →實(shí)際對(duì)象.

但是,必須注意的是程序每次從新啟動(dòng),系統(tǒng)不能保證分配給這個(gè)程序的句柄還是原來的那個(gè)句柄,而且絕大多數(shù)情況的確不一樣的。假如我們把進(jìn)入電影院看電影看成是一個(gè)應(yīng)用程序的啟動(dòng)運(yùn)行,那么系統(tǒng)給應(yīng)用程序分配的句柄總是不一樣,這和每次電影院賣給我們的門票總是不同的一個(gè)座位是一個(gè)道理。

看完了這篇文章,相信你對(duì)“c++中句柄的理解”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)站欄目:c++中句柄的理解-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://jinyejixie.com/article6/dsgoig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、軟件開發(fā)、云服務(wù)器網(wǎng)站改版、全網(wǎng)營銷推廣、營銷型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
衡阳县| 左权县| 临泽县| 商洛市| 哈尔滨市| 紫阳县| 敖汉旗| 平舆县| 册亨县| 阜城县| 汪清县| 浦东新区| 台山市| 乐安县| 五大连池市| 商丘市| 伊春市| 乌拉特后旗| 侯马市| 离岛区| 忻城县| 西城区| 许昌县| 麻阳| 溆浦县| 新疆| 治多县| 仁寿县| 科技| 常山县| 会同县| 横山县| 宁武县| 东源县| 什邡市| 苗栗市| 陵川县| 台东县| 晋城| 清苑县| 报价|