博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Marshal.Copy 之 startIndex 参数的含义
阅读量:6936 次
发布时间:2019-06-27

本文共 642 字,大约阅读时间需要 2 分钟。

Marshal.Copy 可以将 Array 中的数据拷贝给 IntPtr 所指向的地址,也可以将 IntPtr 地址中的内容拷贝给 Array。

不管是从哪里拷贝到哪里,其中都有一个参数 startIndex。那么这个 startIndex 到底是指 IntPtr 的偏移量呢,还是 Array 的偏移量呢?

下面我们看一段示例代码:

int[] buffer = { 1, 2, 3 };            int[] buffer1 = new int[3];            int[] buffer2 = new int[3];            IntPtr p = WinBase.LocalAlloc(WinBase.LocalMemoryFlags.LPTR, 16);            Marshal.Copy(buffer, 1, p, 1);            Marshal.Copy(p, buffer1, 0, 3);            Marshal.Copy(p, buffer2, 1, 1);

执行后,buffer1 的值是 {2, 0, 0},buffer2 的值是 {0, 2, 0}。

也就是说,不管从哪里拷贝到哪里,这个 startIndex 都是指 Array 的偏移量。

转载于:https://www.cnblogs.com/softcat/archive/2012/12/23/2830002.html

你可能感兴趣的文章
BI项目记笔记索引
查看>>
OpenCV-CL: OpenCL加速计算机视觉技术
查看>>
用SignalR做类似QQ登录的应用
查看>>
同步github工程gitcafe
查看>>
[转]用C#实现的条形码和二维码编码解码器
查看>>
_tcscat在Debug和Release根据问题
查看>>
LinearLayout 垂直滚动条
查看>>
7月19日Docker&Kubernetes技术沙龙总结 - DockOne.io
查看>>
【扩展知识3】一些困难的数组
查看>>
如何在Ubuntu 14.04中安装最新版Eclipse
查看>>
sublime text 3之快捷键操作
查看>>
rest-work-eat-study-rest-work-eat or rest-rest-work-work-eat-eat..
查看>>
Hadoop-2.2.0中国文献—— Web应用代理
查看>>
iOS开发多线程篇—多线程简单介绍
查看>>
c语言的label后面不能直接跟变量申明
查看>>
log4j配置文件的详解
查看>>
struts2于validate要使用
查看>>
C++11实现模板手柄:委托构造函数、defaultkeyword分析
查看>>
Ignatius and the Princess III(母函数)
查看>>
使用setsid替代nohup
查看>>