c#中Marshal.Copy()方法的使用
来源:互联网 发布:淘宝主机配件店铺推荐 编辑:程序博客网 时间:2024/05/07 16:24
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
原文地址:http://blog.csdn.net/xiaobai1593/article/details/7065955
- 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的使用
- 《TCP/IP详解 卷1:协议》 读书笔记 第14章 DNS:域名系统
- cookie不同系统间共享
- 简单的WSGI例子
- 《从零开始学Swift》学习笔记(Day 8)——小小常量、变量大作用
- recovery auto test cmd
- c#中Marshal.Copy()方法的使用
- List sort()自定义排序
- 22-8-2016 网易面试后的总结
- WebView开发详解(一)
- 手机如何通过基站连接互联网
- PHP与MYSQL事务处理
- Android之双击回到顶部
- 改变Placeholder字体颜色
- 《从零开始学Swift》学习笔记(Day 9)——离开表达式你试试!