c#中Marshal.Copy()方法的使用
来源:互联网 发布:雷军回应miui广告知乎 编辑:程序博客网 时间:2024/05/19 20:56
c#中Marshal.Copy方法的使用
Marshal.copy()方法用来在托管对象(数组)和非托管对象(IntPtr)之间进行内容的复制
函数有很多重载,如下所示:
Copy(array<Byte>[]()[], Int32, IntPtr, Int32) 将一维的托管 8 位无符号整数数组中的数据复制到非托管内存指针。
Copy(array<Char>[]()[], Int32, IntPtr, Int32) 将数据从一维的托管字符数组复制到非托管内存指针。
Copy(array<Double>[]()[], Int32, IntPtr, Int32) 将数据从一维的托管双精度浮点数组复制到非托管内存指针。
Copy(array<Int16>[]()[], Int32, IntPtr, Int32) 将数据从一维的托管 16 位带符号整数数组复制到非托管内存指针。
Copy(array<Int32>[]()[], Int32, IntPtr, Int32) 将数据从一维的托管 32 位带符号整数数组复制到非托管内存指针。
Copy(array<Int64>[]()[], Int32, IntPtr, Int32) 将数据从一维的托管 64 位带符号整数数组复制到非托管内存指针。
Copy(IntPtr, array<Byte>[]()[], Int32, Int32) 将数据从非托管内存指针复制到托管 8 位无符号整数数组。
Copy(IntPtr, array<Char>[]()[], Int32, Int32) 将数据从非托管内存指针复制到托管字符数组。
Copy(IntPtr, array<Double>[]()[], Int32, Int32) 将数据从非托管内存指针复制到托管双精度浮点数组。
Copy(IntPtr, array<Int16>[]()[], Int32, Int32) 将数据从非托管内存指针复制到托管 16 位带符号整数数组。
Copy(IntPtr, array<Int32>[]()[], Int32, Int32) 将数据从非托管内存指针复制到托管 32 位带符号整数数组。
Copy(IntPtr, array<Int64>[]()[], Int32, Int32) 将数据从非托管内存指针复制到托管 64 位带符号整数数组。
Copy(IntPtr, array<IntPtr>[]()[], Int32, Int32) 将数据从非托管内存指针复制到托管 IntPtr 数组。
Copy(IntPtr, array<Single>[]()[], Int32, Int32) 将数据从非托管内存指针复制到托管单精度浮点数组。
Copy(array<IntPtr>[]()[], Int32, IntPtr, Int32) 将数据从一维托管 IntPtr 数组复制到非托管内存指针。
Copy(array<Single>[]()[], Int32, IntPtr, Int32) 将数据从一维的托管单精度浮点数组复制到非托管内存指针。
这里需要注意的是两个参数Int32类型的使用
Int32类型的两个参数都是用来限定数组的,其中一个限定开始位置,一个限定长度
注意:长度是指数组元素的个数,而不是指字节数
示例:
很经典哦
string name = "xuwei"; IntPtr pName = Marshal.AllocHGlobal(2*name.Length); Marshal.Copy(name.ToCharArray(), 0, pName, name.Length); char[] cName = new char[name.Length]; Marshal.Copy(pName, cName, 0, name.Length);
易知name.Length=5
(1) 给pName指针分配了2*name.Length字节的空间注意:Marshal.AllocHGlobal(Int32 cb)中的参数cb是分配的字节数
(2) 将name转换的char[]中的内容复制到pName所指的内存中,所取长度为char的个数,即name.Length
(3) 给cName分配name.Length个char位置
(4) 将pName中的内容复制到cName数组中,长度同样为name.Length
- c#中Marshal.Copy方法的使用
- c#中Marshal.Copy()方法的使用
- c#中Marshal.Copy()方法的使用
- c#中Marshal.Copy()方法的使用
- 一个Marshal.Copy的问题
- c# Marshal使用
- C# BitmapData和Marshal.Copy()用法
- C# - Marshal.StructureToPtr方法简介
- Marshal类的使用
- C# 中DataTable 的copy()方法和clone()方法
- C#中 CopyT0和Copy方法的用法和区别
- golang json.Marshal使用中遇到的崩溃问题
- Marshal C#
- C#关于使用Marshal.StructureToPtr保存文件
- C#使用内存法Marshal 方法和BitMapData处理任意24位彩色图像
- 从C#下使用WM_COPYDATA传输数据说到Marshal的应用
- 从C#下使用WM_COPYDATA传输数据说到Marshal的应用
- Delphi中Copy的使用
- [USACO 1.4] Summary of Section 1.4
- 孙鑫:第十五讲 多线程聊天室程序创建
- python 文件路径操作方法
- 一个小程序员的日记
- 新闻列表上下循环滚动效果
- c#中Marshal.Copy()方法的使用
- java 日期 总结
- C++ const 限定符总结
- 禁止网页刷新问题(包括快捷键)
- 孙鑫: 第十六讲 线程同步与异步套接字编程收
- HTTP 301,302 跳转
- s:param标签的使用
- Linux OPENSSL服务器
- 游戏数据实时监控和分析