C#中对内存的操作

本文介绍了如何在C#中进行内存操作,包括使用Marshal类进行读写数据,以及运用GCHandle获取内存句柄。重点讲解了GCHandle的几种类型,如Weak、WeakTrackResurrection、Normal和Pinned,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

本文供自己学习,积累经验使用。

向内存读写数据

类名:Marshal
对非托管内存进行操作控制

通用方法:
byte ReadByte(IntPtr address);//读取指定句柄所代表内存处的内容
void WriteByte(IntPtr address,byte b);//向指定句柄所代表内存地址address处写入一个b。

代码:

 byte b = Marshal.ReadByte(address1+5772);//读取指定内存的方法。
 Marshal.WriteByte(address2, 109);

得到内存句柄

结构体:GCHandle
从非托管内存访问托管对象的方法

通用方法:
GCHandle Alloc(object value,GCHandleType type)//为指定对象分配指定类型的句柄

GCHandleType为枚举类型,取值为:
Weak = 0; //此句柄类型用于跟踪对象,但允许回收该对象

WeakTrackResurrection = 1; //该句柄类型类似于 System.Runtime.I

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值