博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#结构体指针的定义及使用详解
阅读量:6550 次
发布时间:2019-06-24

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

在解析C#结构体指针前,必须知道C#结构体是如何定义的。在c#中同样定义该结构体。

C#结构体指针之C#结构体的定义:

[StructLayout(LayoutKind.Sequential)]   public struct VGAStat   {   public int ChannelNum;//通道数量    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]   public char[] Version;//版本信息   public uint CPUUsage;//CPU占用   public bool WorkStatusOk; //工作状态    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]   public tagCheckArg[] ChannelStatistic;//通道信息   }

定义完结构体后,就可将接收到的C#结构体指针转换为定义的结构体对象。

VGAStat entries = (VGAStat)Marshal.PtrToStructure(iptr, typeof(VGAStat));   //iptr为接收到的非托管的结构体指针。

反之,也可将结构体赋值后封送到非托管内存。

假如vga为定义后实例化并赋值了的结构体。

IntPtr intptr = Marshal.AllocHGlobal(Marshal.SizeOf(vga));   Marshal.StructureToPtr(vga, intptr, true);   //在此发送intptr指针给目的方   Marshal.FreeHGlobal(intptr);//释放分配的非托管内存。

C#结构体指针的定义及使用的相关内容那个就向你介绍到这里,希望对你了解和学习C#结构体指针有所帮助。

转载自:http://developer.51cto.com/art/200908/143813.htm

你可能感兴趣的文章
[置顶] 遵循Java EE标准体系的开源GIS服务平台之二:平台部署
查看>>
Java递归算法——阶乘
查看>>
Multi-voltage和power gating的实现
查看>>
JavaScript面向对象 ~ 原型和继承(1)
查看>>
spring cloud微服务分布式云架构--hystrix的使用
查看>>
解决Mac启动Eclipse Memory Analyzer报错问题
查看>>
自己写的进度条###
查看>>
实现批量添加20个用户,用户名为user1-50,密码为user后面跟5个随机字符
查看>>
Net命令详解
查看>>
ThreadLocal使用出现的问题
查看>>
连接池并发的实现原理
查看>>
创建Pch预编译文件
查看>>
阿里云Centos配置iptables防火墙
查看>>
UML类图几种关系的总结
查看>>
PHP面试题汇总
查看>>
程序员杂记系列
查看>>
【树莓派】制作树莓派所使用的img镜像(一)
查看>>
理解网站并发量
查看>>
spring整合elasticsearch之环境搭建
查看>>
TensorFlow 架构与设计-编程模型【转】
查看>>