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
代码.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现