「句柄」是用來操作某個「物件/資源,也就是:操作某個目標」」的,那麼「句柄」到底是什麼意思啊?釋放句柄又怎麼解釋?
「句柄」是用來操作某個「物件/資源,也就是:操作某個目標」」的,那麼「句柄」到底是什麼意思啊?釋放句柄又怎麼解釋?
對象就比如你對象,句柄就好比你對象的手機號碼,你不必時時刻刻關心你對像在哪裡幹嘛,你只要有需要的時候打ta電話就能找到,連釋放的時候都可以一個電話說:我們分手了。
句柄
英文單字為handle
。
句柄,就是回調函數。
句柄
(handle)在語意上可以理解為把手
。用這個把手,可以得到資源。拉著把手等於拿著資源,針對把手操作就等於順藤摸瓜操作了資源。例如:
<code class="php">// 建立资源 $ch = curl_init(); // 根据句柄操作资源 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, TRUE); curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // 根据句柄执行这个资源 $head = curl_exec($ch); </code>
英文裡還有個詞叫love handle
指得就是肚子周圍的一圈可以捏來捏去的小贅肉,直譯可以理解為「愛的把手」
類似就是一個通道,一個保持著某種狀態的物件。
一些資源因為性質的原因無法直接操作, 就需要透過句柄去操作。
例如:
操作資料庫需要身份,所以登入資料庫以後的句柄帶著身份資訊去操作資料庫
檔案的讀寫有檔案指標位置,讀寫需要控制指標位置, 句柄提供了一個帶有狀態的通道。
定時器是一種狀態,把定時狀態賦值給句柄, 當觸發了一些事情以後可以去對句柄做處理(取消定時,提前觸發)等。
你的應用程式往往要對物件(資料檔, 自訂的資料結構等)做一些操作, 而句柄可以簡單地理解為是指向這些物件的一個指標. 在你的程式啟動之後, 這些物件在內存中並非是一成不變的, 一方面由於處理器調度等原因, 另一方面現在的操作系統大多基於虛擬內存空間, 在這種情況下, 內存管理器會經常來回移動對象, 以此來滿足當前運行的需要, 那如果說我們尋找對象的方式僅僅是依靠一個指針---- 指向了一個固定的內存地址, 那麼顯然是沒辦法應對不斷變化的實際內存, 所以, 句柄可以說是一個指向指針的指針, 它本身雖然沒有直接指向對象, 但是可以通過它來獲知對像在內存上的變動情況, 然後間接地獲取對象
也就是說, 實際物件在記憶體裡的位址通常是不固定的, 而固定的句柄則描述了相應物件在記憶體裡的位置
在C語言裡有的是指向結構體的指標