91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

VB.NET指針怎么應用

發布時間:2021-12-02 13:52:40 來源:億速云 閱讀:257 作者:小新 欄目:編程語言

這篇文章主要介紹了VB.NET指針怎么應用,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

VB里使用指針不象C里那樣靈活,用指針處理數據時都需要用CopyMemory將數據在指針和VB能夠處理的變量之間來回拷貝,這需要很大的額外開銷。因此不是所有C里的指針操作都可以移值到VB里來,我們只應在需要的時候才在VB里使用指針。

1、VB.NET指針應用動態內存分配:完全不可能、可能但不可行,VB標準

在C和C++里頻繁使用指針的一個重要原因是需要使用動態內存分配,用Malloc或New來從堆棧里動態分配內存,并得到指向這個內存的指針。在VB里我們也可以自己用API來實現動態分配內存,并且實現象C里的指針鏈表。

但我們不可能象C那樣直接用指針來訪問這樣動態分配的內存,訪問時我們必須用CopyMemory將數據拷貝到VB的變量內,大量的使用這種技術必然會降低效率,以至于要象C那樣用指針來使用動態內存根本就沒有可行性。要象C、PASCAL那樣實現動態數據結構,在VB里還是應該老老實實用對象技術來實現。

本文配套代碼中的LinkedList里有完全用指針實現的鏈表,它是使用HeapAlloc從堆棧中動態分配內存,另有一個調用FindFirstUrlCacheEntry這個API來操作IE的Cache的小程序IECache,它使用了VirtualAlloc來動態分配內存。但實際上這都不是必須的,VB已經為我們提供了標準的動態內存分配的方法,那就是:對象、字符串和字節數組限于篇幅,關于對象的技術這里不講,LinkedList的源代碼里有用對象實現的鏈表,你可以參考。字符串可以用Space$函數來動態分配,VB的文檔里就有詳細的說明。關于字節數組,這里要講講,它非常有用。我們可用Redim來動態改變它的大小,并將指向它***個元素的指針傳給需要指針的API,如下:

dim ab() As Byte , ret As long  '傳遞Null值API會返回它所需要的緩沖區的長度。  ret = SomeApiNeedsBuffer(vbNullString)  '動態分配足夠大小的內存緩沖區  ReDim ab(ret) As Byte  '再次把指針傳給API,此時傳字節數組***個元素的指針。  SomeApiNeedsBuffer(ByVal VarPtr(ab(1)))

在本文配套程序中的IECache中,我也提供了用字節數組來實現動態分配緩沖區的版本,比用VirtualAlloc來實現更安全更簡單。

2、VB.NET指針應用突破限制

下面是一個突破VB類型檢查來實現特殊功能的經典應用,出自Bruce Mckinney的《HardCore Visual Basic》一書。

將一個Long長整數的低16位作為Interger型提取出來,

'標準的方法,也是高效的方法,但不容易理解。  Function LoWord(ByVal dw As Long) As Integer  If dw And &H8000& Then  LoWord = dw Or &HFFFF0000  Else  LoWord = dw And &HFFFF&  End If  End Function   '用指針來做效率雖不高,但思想清楚。  Function LoWord(ByVal dw As Long) As Integer  CopyMemory ByVal VarPtr(LoWord), ByVal VarPtr(dw), 2  End Function

感謝你能夠認真閱讀完這篇文章,希望小編分享的“VB.NET指針怎么應用”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长治市| 偃师市| 吴堡县| 南康市| 寿阳县| 淮北市| 仙居县| 衡阳市| 宁海县| 诏安县| 桐乡市| 彩票| 白河县| 九寨沟县| 通许县| 财经| 苍山县| 台安县| 雅安市| 三门县| 仪陇县| 临西县| 德清县| 华宁县| 西藏| 阿拉善左旗| 庄浪县| 天镇县| 灵璧县| 广东省| 资中县| 沙洋县| 文昌市| 汕尾市| 福建省| 友谊县| 阳曲县| 名山县| 文成县| 赞皇县| 陆丰市|