d的破坏与安全

少年意气强不羁,虎胁插翼白日飞。这篇文章主要讲述d的破坏与安全相关的知识,希望能为你提供帮助。
??原文??? 因为??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??.
【d的破坏与安全】??use???推导为??系统???,闭包也未标记为??安全???.
标记???use???为??安全??,来看看说了啥.
对??类???,当前??dmd+druntime???不能静态决定??析构器???是否??安全??.



    推荐阅读