C# unsafe里的fixed是做什么用的?
💡
原文中文,约4500字,阅读约需11分钟。
📝
内容提要
本文介绍了C#中的unsafe和fixed关键字的使用,通过代码示例和汇编代码分析展示了如何使用fixed关键字,避免指针指向的值被移位。
🎯
关键要点
- unsafe关键字用于在托管代码中使用非托管指针。
- fixed关键字用于临时固定变量以便找到其地址,防止GC移位。
- fixed关键字固定的是指针p指向的值,GC会找到p指针的地址。
- 使用fixed可以避免在垃圾回收时指针指向的值被移位。
- fixed的作用类似于using语句,执行完毕后会自动回收。
- 通过fixed分配的指针p在GC堆之外,执行完后会自动回收。
- 通过汇编代码分析验证指针p不在GC堆范围内。
➡️