簡介
句柄(handle)是C++程序設計中經常提及的一個術語。它并不是一種具體的、固定不變的數據類型或實體,而是代表了程序設計中的一個廣義的概念。句柄一般是指獲取另一個對象的方法——一個廣義的指針,它的具體形式可能是一個整數、一個對象或就是一個真實的指針,而它的目的就是建立起與被訪問對象之間的唯一的聯系。
在C++中,要訪問一個對象,通常可以建立一個指向對象的指針。但是在很多具體的應用中,直接用指針代表對象并不是一個好的解決方案。雲存儲是目前的一種新的存儲模式,它不是一個傳統的硬件存儲設備(如磁盤、光盤等),而是一種由專門的雲存儲服務供應商提供的服務,任何用戶隻需支付一定的費用,都可以使用這種存儲服務。用戶和程序可以像訪問本地文件系統一樣,透明的訪問存儲在遠端系統上的文件。
編輯
句柄是Windows系統中對象或實例的标識,這些對象包括模塊、應用程序實例、窗口、控制、位圖、GDI對象、資源、文件等
數據類型
從數據類型上來看,它隻是一個16位的無符号整數。應用程序總是通過調用WindowsAPI獲得一個句柄,之後其他Windows函數就可以使用該句柄,以引用和操作相應的内核對象。句柄可以像指針那樣置空,那樣句柄就沒有任何意義,不代表任何内核對象。
使用
句柄在Windows編程中是一個很重要的概念,在Windows程序中并不是用物理地址來标識一個内存塊、文件、任務或動态裝入模塊的。相反地,Windows API給這些項目分配确定的句柄,并将句柄返回給應用程序,然後通過句柄來進行操作。
應該明白的是,句柄是一個标識符,是用來标識對象或者項目的。從數據類型上來看它隻是一個16位的無符号整數。應用程序幾乎總是通過調用一個Windows函數來獲得一個句柄,之後其他的Windows函數就可以使用該句柄,以引用相應的對象。在Windows編程中會用到大量的句柄。
好處
句柄可以給我們帶來如下的好處:
1、我們可以在實現中用尺寸大小固定的(constant-sized)對象來表示尺寸大小不定的(variable-sized)值。
2、我們可以在實現中用運行時綁定(run-time bounding)而不是編譯時(compile-timebounding)綁定的方式來處理對象。
3、對于實現的改變通常隻會引起一次重新鍊接,而不是重新編譯。
4、我們可以對他人隐藏對象的實現。
發展
在早期的Windows應用程序中,句柄的使用是很頻繁的。但随着MFC類庫發展,其對Windows内核的封裝程度不斷提高。這樣如果用MFC類庫編程的話,就很少會有機會直接對句柄進行操作。但是如果使用 Windows API函數的話,依然需要對句柄進行直接操作。



















