0
点赞
收藏
分享

微信扫一扫

d的破坏与安全

沈芏 2022-06-27 阅读 106

​​原文​​​ 因为​​use​​包含​​destroy​​,所以不能为​​安全​

R use(R, T)(T obj, R delegate(T) fT)
{
scope (exit)
destroy!false(obj);

return fT(obj);
}

如何确保​​安全​​​调用​​destroy​​?

只要调用它的​​析构器​​​是​​@safe​​​的,​​destroy​​​就应是​​安全​​​的.
如果​​​析构器​​​是​​@system​​​,则​​安全​​​调用代码唯一方法是:
​​​(1)​​​确保​​不违反​​​内存安全调用​​析构器​​​条件,
​​​(2)​​​(用​​编译时和/或运行时​​​检查)确保满足这些条件,
​​​(3)​​​在​​@trusted​​​函数中包装​​destroy​​.

​use​​​推导为​​系统​​​,闭包也未标记为​​安全​​​.
标记​​​use​​​为​​安全​​,来看看说了啥.

对​​类​​​,当前​​dmd+druntime​​​不能静态决定​​析构器​​​是否​​安全​​.


举报

相关推荐

0 条评论