c# 不安全代码之指针

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关键字也可以。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值