2505d,d的借用检查器

void func(scope ref int*) {}

unique(int*) a = ...;
assert(a !is null);

unique(int*) b = a;
assert(a is null);
assert(b !is null);

func(b); // ok

@live作为检查器,不必有断定了.

int* a = ...;
int* b = a;   // 所有权转至b
*a = 3; // 不能再用a.

编译器保证约束指针.
@live不需要新语法,他是额外检测层.
DIP1000理念很好,避免栈指针漏洞.问题是适配D的高级构造,需要属性通知函数接口的参数状态.
借用检查器对标有@live的函数都工作.就像只针对@safe函数检查一样.
@live不能为传递性,就像人们要求不传递性@nogc一样.
附加给指针没人用,因为要重写整个程序.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值