地址属性

Pointer<Uint32> address

底层数据的内存地址。

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

示例

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

void main() {
  final list = Uint32List(10);
  myFunction(list.address);
}

.address 之前的表达式像赋值的左侧一样进行评估,得到对表达式背后的存储的访问权限,这既可以用于读取也可以用于写入。然后 .address 提供对该存储的本地指针。

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

实现

external Pointer<Uint32> get address;