Kotlin Native:C对象的所有权和寿命

西格玛士兵

我一直在尝试用对象控制基础原生对象的生存期来包装原生对象的CPointer类型。

用C ++术语,我会做类似的事情:

class T {
private:
  U other;
};

甚至:

class T {
public:
  T(){ other = new U; }
  ~T(){ delete other; }
private:
  U other;
};

我什至不确定这是否正确,但是想法很简单:“ other”对象由T类型的对象持有。

问题是我不知道在Kotlin本机中这是否可行:

class T {
  private val arena = Arena()
  private val ptr: Cpointer<U> = arena.alloc()
  // Should I delegate the free method to T?
}

就我而言,竞技场不会自动回收内存,对吗?我必须打电话给.free().clear()


有什么办法可以达到这种效果?还是唯一的方法是memScoped手动使用和免费调用arena的clear或ptr?

或者,什么是防止K / N中内存浪费/泄漏的最佳方法?

阿尔乔姆·杰格捷列夫(Artyom Degtyarev)

Kotlin / Native没有您想要的C ++方式工作。目前,最佳实践仍然是dispose()在类中提供您自己的方法。在我的回答,我指的是这个GitHub的问题,这种对话在科特林的公共懈怠。我还建议将这些资源作为Kotlin / Native讨论的首选地点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章