c# 那些不常用的操作
stackalloc
临时数组用到内存怎么办?
有一种思路是把他抽成成员变量,复用,复用是减少GC,但不彻底,这个缓存的管理也麻烦,这个缓存自身还是要经过GC的
用stackalloc可以彻底解决
stackalloc 分配的内存在栈上,无需清理,这个方式仅仅用于blittable的结构体,及数值类型以及struct内部没有引用类型
比如
struct ABC//这就不是一个blittable结构
{
string aab;
}
blittable结构
由此衍生出来的问题是,我们怎么尽可能让struct 成为blittable的,c#有另外一个很少人使用的特性
使用unsafe fixed 语法,就可以定义固定的内存,和c语言一样。
这样可以用和c一样的0终结char数组去表示字符串
blitable结构的好处是他是内存一致的,在读写方面我们就可以回到c语言一样的思路