d的自动无垃集代码.

网友投稿 506 2022-11-26

d的自动无垃集代码.

d的自动无垃集代码.

​​​D​​​的​​@nogc​​​注解非常重要,但很少宣传.​​​@nogc​​​的​​主函数​​​可​​编译时​​​保证​​程序​​​永远不会分配​​垃集​​​内存. 从​​​std.experimental.allocator​​​这里分配. 这里的​​​分配器​​​可满足认为​​垃集​​​不合适的,其他​​内存分配​​​需求.通过​​I分配器​​​接口,可运行时根据需要在​​垃集​​​和​​自定义分配策略​​​间切换.​​​automem​​​可简化​​分配​​​.​​​scope(exit)​​来退出.零开销.示例:

struct Point { int x; int y;}{ auto u1 = Unique!(Point, Mallocator)(2, 3);//要传递参数,来初化.但,为单件 assert(*u1 == Point(2, 3)); assert(u1.y == 3); // 转发至容器类型 // auto u2 = u1; // 不编译,只能移动 typeof(u1) u2; move(u1, u2); assert(cast(bool)u1 == false); // u1为空}// 释放内存

​​D​​​中不必​​总是​​​原子​​递增/递减​​.

{ auto s1 = RefCounted!(Point, Mallocator)(4, 5); assert(*s1 == Point(4, 5)); assert(s1.x == 4); { auto s2 = s1; // 可复制,非原子引用计数 } // 引用归1} //引用归0,释放内存

用​​@nogc​​​分配器,用​​automem​​​的代码,自动为​​nogc​​​,由​​RAII​​​管理内存.编译时保证无​​垃集​​​. 可如​​​C++/rust​​​一样,​​自动,而不是手动​​​编写​​@nogc​​代码.

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Android 8.0 内置 APK
下一篇:使用IDEA学习JSP代码第005课
相关文章

 发表评论

暂时没有评论,来抢沙发吧~