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

C#操作內存實例詳解

開發 后端
C#操作內存實例向你介紹了C#操作內存的原理和實現的步驟,以及C#操作內存時需要注意的事項,希望對你的學習有所幫助。

C# 操作內存是如何實現的呢?讓我們開始講解吧:

我們先來看看C#中如何操作內存,也就是非托管的數據。這需要引用System.Runtime.InteropServices命名空間。該命名空間下的Marshal的一些靜態方法提供了這樣的功能:

  1. Marshal.ReadInt32()  
  2. //從指定內存地址讀取4位 C#操作內存  
  3. Marshal.PtrToStringAnsi()  
  4. //從指定內存地址讀取字符串C#操作內存   
  5. Marshal.WriteInt32()  
  6. //將整數寫到指定內存地址 C#操作內存  
  7. Marshal.WriteByte()  
  8. //將字符串寫到指定內存地址我們來看看具體的代碼:   
  9. using System;   
  10. using System.Text;   
  11. using System.Runtime.InteropServices;   
  12.  
  13. internal sealed class RCEvent {   
  14. public int Event;   
  15. public int Flag;   
  16. public string User;   
  17. };   
  18.  //C#操作內存
  19. internal sealed class RCEventAgent {   
  20. internal static RCEvent Read(IntPtr ptr){   
  21. RCEvent Event = new RCEvent();   
  22.    
  23. Event.Event = ReadEvent(ptr);   
  24. Event.Flag = ReadFlag(ptr);   
  25. Event.User = ReadUser(ptr);   
  26.  
  27. return Event;   
  28. }   
  29.  //C#操作內存
  30. internal static int ReadEvent(IntPtr basePtr) {   
  31. return Marshal.ReadInt32(basePtr);   
  32. }   
  33. internal static int ReadFlag(IntPtr basePtr) {   
  34. return Marshal.ReadInt32(basePtr,4);   
  35. }   
  36. internal static string ReadUser(IntPtr basePtr) {   
  37. return Marshal.PtrToStringAnsi(  
  38. new IntPtr(basePtr.ToInt32() + 8));   
  39. }   
  40.  
  41. internal static void Write(ClientEvent Event,IntPtr ptr) {   
  42. WriteEvent(ptr,Event.Event);   
  43. WriteFlag(ptr,Event.Flag);   
  44. WriteUser(ptr,Event.User);   
  45. }   
  46.  //C#操作內存
  47. internal static void WriteEvent(  
  48. IntPtr basePtr,int value) {   
  49. Marshal.WriteInt32(basePtr,value);   
  50. }   
  51. internal static void WriteFlag(  
  52. IntPtr basePtr,int flag) {   
  53. Marshal.WriteInt32(basePtr,4,flag);   
  54. }   
  55. internal static void WriteUser(  
  56. IntPtr basePtr,string user) {   
  57. WriteString(basePtr,user,8,40);   
  58. }   
  59. private static void WriteString(  
  60. IntPtr basePtr,string value,int offset,int length) {   
  61. int pos = 0;   
  62. byte[] bytes = Encoding.Default.GetBytes(value);   
  63. while(pos ﹤ length) {   
  64. if (pos ﹤ bytes.Length)   
  65. Marshal.WriteByte(basePtr,offset,bytes[pos]);   
  66. else   
  67. Marshal.WriteByte(basePtr,offset,0);   
  68.  
  69. pos ++;   
  70. offset ++;   
  71. }   
  72. }   //C#操作內存

這樣我們就可以通過ReadEvent和WriteEvent直接在c#中處理該結構體。或者通過 ReadXXX() 和 WriteXXX() 直接修改其字段。

  1. public void DoSomething(IntPtr ptr){   
  2. RCEvent Event = RCEventAgent.Read(ptr);   
  3. Event.Flag ++;   
  4. RCEventAgent.Write(ptr, Event);   
  5.  
  6. // 或者以下代碼   
  7. // RCEventAgent.WriteFlag( ptr, RCEventAgent.ReadFlag(ptr) + 1 );   

C++中則可以直接將結構體地址傳給C#:

  1. #using   ﹤mscorlib.dll﹥   
  2. #using   ﹤CuteSuProc.dll﹥   
  3.  
  4. void SomeMethod(RCEStruct* pEventStruc){   
  5. MyCSharpDll::DoSomething(pEventStruc);   

C#操作內存的具體內容就向你介紹到這里,希望對你了解和學習C#操作內存有所幫助。

【編輯推薦】

  1. C#操作文本文件之添加文本操作淺析
  2. C#操作文本文件應用實例簡析
  3. C#操作文本文件演練實例淺析
  4. C#操作內存之指針淺析
  5. C#操作內存讀寫方法淺析
責任編輯:仲衡 來源: 博客園
相關推薦

2009-08-18 17:05:08

C#操作xml文件

2009-08-20 11:07:07

C#共享內存

2009-09-02 17:12:06

C#關機代碼

2009-08-18 10:14:19

C#插件構架

2009-09-11 12:31:52

C#實例詳解TypeConvert

2009-08-18 13:49:21

C# 操作Excel

2009-08-19 16:09:15

C#操作Access

2009-08-28 12:47:30

C#靜態方法應用

2009-08-28 13:12:56

C#反射實例C#反射

2009-09-02 19:12:37

C#遞歸

2009-09-07 05:50:59

C# Timer用法

2009-08-21 10:13:02

C#異步初步

2009-09-04 18:09:12

C# Main函數

2009-08-26 11:07:36

C#打印窗體

2009-09-01 11:25:08

C#讀取Word文件

2009-08-26 09:22:44

C#實現打印功能

2009-08-26 11:32:37

C#打印文檔

2009-08-18 16:04:12

C# 操作Excel

2009-08-19 09:42:52

C#操作Word書簽

2009-08-31 18:38:59

C#寫文件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日操操 | 国产精品不卡一区 | 久久人人网| 中文字幕日韩一区 | 中文字幕二区 | 欧美视频一区二区三区 | 久久国产欧美日韩精品 | 精品久久久久久久久久久久久久 | 亚洲系列第一页 | 成人妇女免费播放久久久 | 国产毛片av| 一级片免费视频 | 午夜在线小视频 | 国产精品欧美一区二区 | 中文字幕一区在线观看视频 | 久草久草久草 | 九九热国产视频 | 99精品视频免费在线观看 | 高清国产一区二区 | 国产xxxx在线| 色综合网站 | 91精品国产91久久久久久密臀 | 国产一区二区三区在线免费观看 | 欧美乱大交xxxxx另类电影 | 久久精品综合 | 免费一级黄色电影 | 欧美日韩国产在线 | 狠狠ri | 亚洲日日操| 久久精品国产一区二区电影 | 美女中文字幕视频 | 日本在线视频中文字幕 | 中文字幕人成人 | 91久久精品一区二区二区 | 永久精品 | 日本成人在线观看网站 | 日韩欧美精品在线播放 | 一区二区三区四区日韩 | 99reav| 欧美国产日韩一区二区三区 | 日韩喷潮 |