address 属性

Pointer<T> address

底层数据的内存地址。

形如 expression.address 的表达式表示此 address,只能在整个参数表达式中作为调用叶 Native 外部函数时的一个参数出现。

示例

@Native<Void Function(Pointer<MyStruct>)>(isLeaf: true)
external void myFunction(Pointer<MyStruct> pointer);

final class MyStruct extends Struct {
  @Int8()
  external int x;
}

void main() {
  final myStruct = Struct.create<MyStruct>();
  myFunction(myStruct.address);
}

.address 之前的表达式被评估,就像赋值操作符的左侧,得到对表达式背后的存储的访问,这既可以用于读取也可以用于写入。然后 .address 提供了该存储的本地指针。

在调用叶 Native 外部函数时,.address 的评估发生在调用本地代码之前。这确保Dart垃圾回收器不会移动地址指向的对象。

实现

external Pointer<T> get address;