C#——fixed用法

news/2024/9/19 11:17:13/文章来源:https://www.cnblogs.com/echo-efun/p/18420122

1.fixed语句

*固定用于指针操作的变量;

*可防止垃圾回收器重新定位可移动变量,并声明指向该变量的指针;

*固定变量的地址,在语句的持续时间内不会更改

*fixed语句中,只能使用声明的指针,声明的指针是只读的,无法修改

*fixed语句只能在不安全的上下文中使用

        static void Main(string[] args){unsafe{byte[] bytes =new byte[]{ 1, 2, 3 };fixed (byte* pointerToFirst = bytes){Console.WriteLine($"第一个元素的存储地址是: {(long)pointerToFirst:X}.");Console.WriteLine($"第一个元素是: {*pointerToFirst}.");}}// 第一个元素的存储地址是: 29D24A0.(这个值每次运行都会变化)// 第一个元素是: 1.}

 

2.使用&获取元素的地址时,fixed语句保证垃圾回收器在语句主体执行期间不会重新定位或释放包含对象实例

        static void Main(string[] args){unsafe{int[] numbers = new int[] { 10, 20, 30,40 };fixed (int* toFirst = &numbers[0], toLast = &numbers[numbers.Length-1]){Console.WriteLine((long)toFirst);Console.WriteLine((long)toLast);Console.WriteLine(toLast - toFirst);// output:// 46081092//46081104//3
                }}}

 

3.使用fixed关键字创建在数据结构中具有固定大小的数组缓冲区

*编写与其他语言或平台的数据源进行互操作的方法时,固定大小的缓冲区很有用

*固定大小的缓冲区可采用允许用于常规结构成员的任何属性或修饰符

*限制:数组类型必须为bool   byte  char   short  int  long sbyte  ushort  uint   ulong   float  或  double

internal unsafe struct Buffer
{public fixed char fixedBuffer[128];
}

 

*固定大小的缓冲区与常规数组的区别体现在以下方面:

  • 只能在 unsafe 上下文中使用。
  • 只能是结构的实例字段。
  • 它们始终是矢量或一维数组。
  • 声明应包括长度,如 fixed char id[8]。 不能使用 fixed char id[]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/799760.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

易优eyoucms网站安装报错 SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prep

遇到“SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prepared”这类错误,通常是由于数据库连接参数配置不当导致的。具体来说,这通常是因为PDO驱动在处理预编译语句时出现了问题。 解决方法 按照以下步骤修改数据库配置文件,可以解决这个问题:…

易优eyoucms网站后台账号密码忘记了,怎么办

如果您忘记了易优CMS (EyouCMS) 后台的账号密码,可以通过直接修改数据库的方式来重置密码。以下是具体的步骤: 1. 准备工作 确保您有数据库的访问权限,通常可以通过Navicat或其他数据库管理工具来连接数据库。 2. 连接数据库 使用Navicat或其他数据库管理工具连接到您的数据…

便捷数据检索与下载,拟合曲线预测趋势 轻松管理多个项目,实现在线监测

便捷数据检索与下载,拟合曲线预测趋势 轻松管理多个项目,实现在线监测在线监测管理系统,采用了基于BS架构。该系统可以在浏览器中实现项目管理、数据查看与下载、曲线查看等操作。系统界面简约、布局统一、逻辑清晰,用户操控体验良好。采用了三层监测要素架构,实现了多项目…

C++中share_ptr中循环引用的问题

背景: share_ptr已经很好用了,但是有一点share_ptr智能指针还是有内存泄露的情况,当两个对象相互使用一个shared_ptr成员变量指向对方,会造成循环引用,使引用计数失效,从而导致内存泄漏。weak_ptr 是一种不控制对象生命周期的智能指针, 它指向一个 shared_ptr 管理的对象…

易优eyoucms网站怎么关闭后台登录验证码呢

在易优CMS (EyouCMS) 中关闭后台登录验证码的操作相对简单。以下是详细的步骤: 1. 登录后台 首先需要登录到后台管理系统。 登录后台访问后台登录页面:访问/admin.php或相应的后台登录地址。输入用户名和密码:输入管理员账号和密码登录后台。2. 进入系统设置 进入后台后,找…

易优eyoucms网站后台登录验证码是否不用,也可以登录?

在易优CMS (EyouCMS) 中,后台登录验证码是否必须取决于您的配置。如果您不需要验证码,可以通过以下几种方法来关闭它,从而实现无需验证码即可登录后台。 方法一:通过后台设置关闭登录后台:访问后台登录页面,并登录。进入系统设置:在后台左侧菜单栏中找到“系统设置”或“…

易优eyoucms网站后台登录页面错位/乱码,CSS文件丢失

当易优CMS后台登录页面出现错位或乱码,通常是由于CSS文件丢失或加载不正确导致的。以下是详细的解决步骤: 1. 备份现有文件 在进行任何操作之前,先备份现有文件,以防万一。 备份现有文件登录FTP客户端:使用FTP客户端登录到服务器。备份现有文件:备份整个网站目录,或者至…

正也科技-辖区与指标管理系统 强化决策支持

正也科技的“辖区与指标管理系统”设计理念先进,旨在通过科学合理的组织架构和精细化的指标管理,帮助企业实现更高效的市场布局、人员配置及业绩监控。以下是对该系统核心功能的进一步阐述及其对企业运营带来的优势:正也科技辖区管理组织架构维护 灵活性与适应性:系统允许企…

Linux awk中输出上下两列值之间的差值

001、[sy20213040737@admin2 test]$ cat a.txt ## 测试数据 3 8 34 50 [sy20213040737@admin2 test]$ awk {if(NR == 1){tmp = $1} else {print $1 - tmp; tmp = $1}} a.txt ## 输出差值 5 26 16 。

对象字符串转换为数组对象

数据源格式:{\n "填写说明": "每个学期的开学之前,需要调整这里面的配置,这样课表和一卡通对接的才能是正确的数据",\n "学年编号": "2024-2025",\n "学期编号": "1"\n}"{"填写说明":…

2414.最长的字母序连续字符串的长度

字母序连续字符串 是由字母表中连续字母组成的字符串。换句话说,字符串 "abcdefghijklmnopqrstuvwxyz" 的任意子字符串都是 字母序连续字符串 。 例如,"abc" 是一个字母序连续字符串,而 "acb" 和 "za" 不是。 给你一个仅由小写英文…

易优eyoucms网站后台登录一直显示验证码错误

当后台登录一直显示验证码错误时,可以尝试以下几个方面进行排查和解决: 1. 检查目录权限和所有者 确保目录权限和所有者设置正确,这对于文件的读写非常重要。 修改目录权限修改目录权限:将目录权限设置为755,文件权限设置为644。 使用命令chmod -R 755 /path/to/directory…