C#通过unsafe来操作指针
2024-09-08 16:39:13
这里不介绍unsafe的理论,这里单单介绍它的用法。如果要了解的更具体,可以看这篇大神的博文:C#通过指针操作图像
先从一个很简单的例子介绍:
private void TestInptr()
{
unsafe
{
byte a = 100;
byte* p = &a;
p = &a;
Console.WriteLine("修改前a=" + *p);
a = 200;//修改后再输出
Console.WriteLine("修改后a=" + *p);
(*p)++;//通过指针修改a
Console.WriteLine("Value:" + *p);
}
}
修改前a=100
修改后a=200
Value:201
操作字节数组
private unsafe void TestInptr2(byte[] bufferB)
{
Stopwatch sw = new Stopwatch();
sw.Start();
fixed (byte* p = bufferB)//指向托管变量的指针需要放在fixed里面,bufferB存放在堆中
{
for (int i = 0; i < bufferB.Length; i++)
{
*(p + i) = 200;
}
}
sw.Stop();
Console.WriteLine(sw.ElapsedMilliseconds);
}
如果是修改大小为2592*1944大小的字节数组,需要30ms的时间。
最新文章
- ng-class结合三目运算
- 【好玩】将js代码转为日式表情
- C# using 三种使用方式 C#中托管与非托管 C#托管资源和非托管资源区别
- Windows下git使用代理服务器的设置方法
- C/C++数组名与指针的区别详解
- opencv 手写选择题阅卷 (四)Android端 手机应用开发
- Nginx配置文件变量大全
- JavaSE replaceAll 方法
- apache config directive &ndash; order, allow, deny
- 原生Js 两种方法实现页面关键字高亮显示
- Netty 学习系列
- jquery第一篇
- Vue获取dom和数据监听
- Jmeter使用之-断言
- 【python】time和datetime的strptime不是线程安全的!
- thinkphp error:no database select
- MenOS
- 模板引擎之jade 学习
- 七,apache配置域名
- 对象.isdigit() ,只能判断全是数字的字符串