成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一見鐘情VB.NET指針

開發(fā) 后端
這里介紹VB.NET指針,在.NET中,對(duì)指針指向數(shù)據(jù)的存儲(chǔ)函數(shù)都封裝在marshal類中,主要的函數(shù)包括:Copy、PtrToStringUni 、PtrToStructure 、OffsetOf、WriteXXX,RreadXXX等。

VB.NET有很多值得學(xué)習(xí)的地方,這里我們主要介紹VB.NET指針,包括介紹NET垃圾回收器等方面,欲知VB.NET如何。以下程序我們申請(qǐng)幾個(gè)指向不同類型的VB.NET指針:

  1. '使用<StructLayout(LayoutKind.Sequential)>屬性告訴net編譯器:結(jié)構(gòu)的元素在內(nèi)存中按其出現(xiàn)的順序排列  
  2. <StructLayout(LayoutKind.Sequential)> _  
  3. Public Structure DEFUDT_Test  
  4. Public bytb As Byte  
  5. Public i32a As Int32  
  6. End Structure  
  7.  
  8. Public Function fnGetIntptr1() As IntPtr  
  9. '取得一個(gè)4字節(jié)數(shù)組指針  
  10. Dim tabytTest(3) As Byte  
  11. '以下語(yǔ)句告訴net垃圾回收進(jìn)程不對(duì)tabytTest進(jìn)行處理,也就是說tabytTest占用的內(nèi)存區(qū)域固定不變。  
  12. Dim thObject As GCHandleGCHandle = GCHandle.Alloc(tabytTest, GCHandleType.Pinned)  
  13. Dim tpObject As IntPtr = thObject.AddrOfPinnedObject() '取得指向字節(jié)數(shù)組的指針  
  14.  
  15. '取得一個(gè)指向32位內(nèi)存數(shù)據(jù)的指針,  
  16. '由于使用gchandle取指針的方法只能對(duì)引用的對(duì)象有效,  
  17. '所以對(duì)如int32等值類型必須使用將其封裝成為一個(gè)對(duì)象的方法以變?yōu)橐妙愋? 
  18. Dim ti32Test As Object = Convert.ToInt32(0)  
  19. '以下語(yǔ)句告訴net垃圾回收進(jìn)程不對(duì)ti32test進(jìn)行處理,也就是說ti32Test的內(nèi)存位置固定不變。  
  20. Dim thObject1 As GCHandleGCHandle = GCHandle.Alloc(ti32Test, GCHandleType.Pinned)  
  21. Dim tpObject1 As IntPtr = thObject1.AddrOfPinnedObject() '取得ti32Test的首地址  
  22.  
  23. Dim tudtTest1 As DEFUDT_Test  
  24. '由于結(jié)構(gòu)是一種值類型變量,為保證指針申請(qǐng)方便,我們申請(qǐng)  
  25. '取得一個(gè)和結(jié)構(gòu)tudtTest1大小一致的字節(jié)數(shù)組指針,只要空間占用長(zhǎng)度和結(jié)構(gòu)一樣就可以了  
  26. '由于net在結(jié)構(gòu)封裝中會(huì)插入額外的數(shù)據(jù)位,所以一定要用sizeof方法得到結(jié)構(gòu)在非托管使用時(shí)的實(shí)際大小  
  27. Dim tudtTest(Marshal.SizeOf(tudtTest1)) As Byte  
  28. Dim thObject2 As GCHandleGCHandle = GCHandle.Alloc(tudtTest, GCHandleType.Pinned)  
  29. Dim tpObject2 As IntPtr = thObject2.AddrOfPinnedObject() '取得指向結(jié)構(gòu)的指針  
  30.  
  31. '在這兒你可以寫對(duì)指針處理的任意代碼(在例2中會(huì)給予補(bǔ)充)……  
  32.  
  33. '在使用完畢后一定要釋放指針指向的內(nèi)存塊,讓垃圾回收器可對(duì)這個(gè)內(nèi)存塊回收處理  
  34. If thObject.IsAllocated Then  
  35. thObject.Free()  
  36. End If  
  37. If thObject1.IsAllocated Then  
  38. thObject1.Free()  
  39. End If  
  40. If thObject2.IsAllocated Then  
  41. thObject2.Free()  
  42. End If  
  43. End Function 

上例中VB.NET指針流程處理可以歸納為:
1、定義一個(gè)具有合適內(nèi)存長(zhǎng)度的引用變量(關(guān)于引用變量和值變量的差異可以參觀VB.NET的書籍)
2、使用GCHandle.Alloc方法將變量的內(nèi)存區(qū)域固定下來。
3、使用GCHandle對(duì)象的AddrOfPinnedObject取得該內(nèi)存區(qū)域的首地址并賦值給指針變量.
4、對(duì)指針進(jìn)行操作
5、使用GCHandle對(duì)象的free方法釋放指針指向的內(nèi)存區(qū)域以便NET垃圾回收器可以回收這個(gè)內(nèi)存空間
6、VB.NET指針?biāo)赶驍?shù)據(jù)的存取

在.NET中,對(duì)指針指向數(shù)據(jù)的存儲(chǔ)函數(shù)都封裝在marshal類中,主要的函數(shù)包括:Copy、PtrToStringUni 、PtrToStructure 、OffsetOf、WriteXXX,RreadXXX等,其中WriteXXX的表示向指針?biāo)硎镜牡刂分袑懭隭XX類型的數(shù)據(jù),而ReadXXX中作用就是將VB.NET指針?biāo)诘刂返臄?shù)據(jù)以XXX類型方式讀出。

【編輯推薦】

  1. 簡(jiǎn)單描述VB.NET ProcessStartInfo對(duì)象
  2. VB.NET System.IO老鳥經(jīng)驗(yàn)談
  3. 分析VB.NET創(chuàng)建類的具體操作過程
  4. 快速了解VB.NET垃圾收集器
  5. 對(duì)VB.NET OBEX協(xié)議的簡(jiǎn)單概括
責(zé)任編輯:佚名 來源: IT168
相關(guān)推薦

2009-10-28 13:35:25

VB.NET On E

2020-04-24 08:48:22

面試求職面試官

2013-07-25 13:33:58

2012-12-27 16:23:25

簡(jiǎn)歷應(yīng)屆畢業(yè)生

2015-05-07 14:26:50

APM透視寶云智慧

2015-12-11 11:31:41

apm企業(yè)

2009-06-18 08:17:14

百度李彥宏馬東敏

2009-10-14 15:20:21

VB.NET窗體指針

2009-11-10 16:46:52

VB.NET指針應(yīng)用

2009-10-27 09:01:54

VB.NET內(nèi)存指針

2009-11-10 16:27:45

VB.NET指針

2009-10-29 14:02:24

VB和VB.NET比較

2010-01-14 10:35:34

VB.NET指針

2009-10-20 14:21:55

VB.NET fnSi

2009-10-14 12:51:41

VB.NET Data

2011-06-17 11:05:22

VB.NET

2009-06-24 15:45:32

VB.NET

2010-01-07 16:40:13

VB.NET一維數(shù)組

2010-01-21 17:34:48

VB.NET Bool

2009-08-19 16:38:30

VB.NET接口范例
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩精品一区二区三区视频播放 | 粉嫩粉嫩芽的虎白女18在线视频 | 91精品国产综合久久久久 | 亚洲国产乱码 | 精精国产xxxx视频在线播放 | 中文字幕在线看第二 | 亚洲欧美成人影院 | 人人干人人玩 | 国产精品久久久久无码av | 色狠狠一区 | 亚洲欧美中文字幕在线观看 | 国产精品123区 | aaaaaaa片毛片免费观看 | 国户精品久久久久久久久久久不卡 | 91久久电影 | 中文字幕在线视频免费视频 | 国产美女永久免费无遮挡 | 国产探花在线观看视频 | 男人天堂av网| 欧美日韩国产精品一区二区 | 国产激情视频在线观看 | 亚洲经典一区 | 九九久久精品 | 日韩成人影院 | 亚洲国产第一页 | 嫩草黄色影院 | 国产精品亚洲一区二区三区在线 | 国产成人精品一区二 | 午夜在线观看免费 | 都市激情亚洲 | 午夜精品久久 | 亚洲一区二区在线视频 | 国产亚洲精品久久情网 | 亚洲欧美中文日韩在线v日本 | 日韩电影一区二区三区 | 欧美精品久久久 | 国产精品日韩欧美一区二区三区 | 精品一区二区三区在线播放 | 亚洲情综合五月天 | 69xxx免费| 欧美一级大片 |