地址 属性
获取/设置对
底层数据的内存地址。
形式为 expression.address
的表达式表示此 address
,只能作为整个参数表达式在调用叶 Native 外部函数时出现。
只能用于 Struct 子类型的字段、Union 子类型的字段、Array 元素或 TypedData 元素。换句话说,正在访问的地址的数字本身必须通过 Struct、Union、Array 或 TypedData 访问。
示例
@Native<Void Function(Pointer<Int8>)>(isLeaf: true)
external void myFunction(Pointer<Int8> pointer);
final class MyStruct extends Struct {
@Int8()
external int x;
@Int8()
external int y;
@Array(10)
external Array<Int8> array;
}
void main() {
final myStruct = Struct.create<MyStruct>();
myFunction(myStruct.y.address);
myFunction(myStruct.array[5].address);
final list = Int8List(10);
myFunction(list[5].address);
}
在 .address
之前的表达式被评估为赋值操作符的左侧,以某种方式访问表达式背后的存储,这可以用于读取和写入。然后 .address
给出对该存储的本地指针。
在调用叶 Native 外部函数之前评估 .address
。这确保 Dart 垃圾收集器不会移动地址指向的对象。
实现
external Pointer<Never> address;