Skip to content

内存模型与生命周期(规划为主)

当前实现

  • new:在堆上分配对象(统一分配器),调用类的 constructor(...) 方法完成初始化。
  • delete obj;:仅在对象恰好位于堆顶时回退 brk(保守行为),否则忽略;未来将改为可回收。
  • 字符串/内置分配:使用同一分配器。
  • 取址/解引用:addrof(expr) 获取地址(i64);objof(addr) 将整数视作泛型引用,as T 做解引用。

计划中的改进

  • 可回收分配器:引入 free-list 取代线性分配,delete 将真正释放块。
  • 析构链:约定 destructor 方法,delete 或自动释放前调用,完成资源清理。
  • 静态引用计数/逃逸分析
    • 编译期可确定的路径自动插入 retain/release。
    • 无法确定的路径给出警告,提示开发者显式 delete 或手动管理。
  • 更细粒度的内存布局/对齐策略,减少碎片。

指针与系统调用

  • 语言不暴露裸指针,但允许地址整数:
    • 取地址:let addr: i64 = addrof(buf);
    • 作为指针参数:syscall(1, 1, (objof(addr)) as i64, len);
  • 解引用:(objof(addr) as T) 视作 T* 并加载。