c# 不安全代码之指针
2012-09-28 16:43 xiashengwang 阅读(477) 评论(0) 编辑 收藏 举报1,首先,编译器的选项里要打开“允许不安全代码”选项。
2,代码块要放在unsafe关键字中,或对整个函数使用unsafe关键字。
3,对于指向托管变量的指针分配必须放在fixed关键字中。
例子:
int i; unsafe { byte a = 254, r = 240, g = 230, b = 220; byte[] bytes = new byte[] { a, r, g, b }; //byte[] --> int //byte* pb = bytes;→报错,指向托管变量的指针要放在fixed中 fixed (byte* pb = bytes) { i = *((int*)pb); } }
4,非托管变量的指针分配可以不放在fixed关键字中。
unsafe { int i2 = 1234567; int* ppp = &i2;//i2是分配在栈上的,所以可以这样写 }
上面的i2不是分配在托管堆中的,所以不用fixed关键字也可以。