【CSharp】int类型与IntPtr类型之间的转换

本文介绍了在C#中如何进行int类型与IntPtr类型的转换,包括Marshal.AllocHGlobal方法用于int转IntPtr,以及Marshal.ReadInt32方法用于IntPtr转int。这些转换在处理非托管内存和句柄时非常有用。文章提供了详细的接口解释和使用示例。

【CSharp】int类型与IntPtr类型之间的转换

1.背景

.NET提供了一个结构体System.IntPtr专门用来代表句柄或指针。
IntPtr 结构,表示一个带符号整数,其中位宽度与指针相同。

注解
类型 IntPtr 设计为一个整数,其大小与指针相同。 也就是说,此类型的实例应在 32 位进程中为 32 位,在 64 位进程中为 64 位。
支持 IntPtr 指针的语言可以使用 类型,并作为在支持和不支持指针的语言之间引用数据的常用方法。
IntPtr 对象还可用于保存句柄。 例如, 的 IntPtr 实例在 类中 System.IO.FileStream 广泛使用,用于保存文件句柄。

2.int转IntPtr接口

需要用到的接口1:
Marshal.AllocHGlobal(int cb) :从进程的非托管内存中分配内存。
来自命名空间:System.Runtime.InteropServices.
参数是Int32/或指向Int32的指针,表示内存中所需的字节数。
返回IntPtr,表示指向新分配的内存的指针。
注意必须使用 FreeHGlobal(IntPtr) 方法释放该IntPtr指向的内存Marshal.FreeHGlobal( IntPtr hglobal);。

AllocHGlobal(Int32) 通过使用指定的字节数,从进程的非托管内存中分配内存。 public static IntPtr AllocHGlobal (int
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jn10010537

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值