检查 Dart FFI 中是否为空



使用 FFI 检查指针是否是 Dart 中的空指针的最佳方法是什么?

目前的做法是这样的:

ffi.Pointer<Thing> thing = ... // can potentially return null
if(thing == ffi.nullptr) {
...

但是,当然,这会给出"相等运算符==调用不相关类型的引用"警告消息。

该 API 仍然很新,我不确定如何处理这个问题。我也可能想多了,有一个超级简单的答案。

好吧,我还没有尝试过 dart:ffi,但从 == 的 API 文档中您可以看到:

指针的相等性仅取决于其地址

https://api.dart.dev/dev/2.6.0-dev.0.0/dart-ffi/Pointer-class.html

因此,您可以做的只是比较两个指针的地址:

ffi.Pointer<Thing> thing = ... // can potentially return null
if(thing.address == ffi.nullptr.address) {
...

实际上,空指针只是一个指向地址 0 的指针:

final Pointer<Void> nullptr = Pointer.fromAddress(0)

https://api.dart.dev/dev/2.6.0-dev.0.0/dart-ffi/nullptr.html

相关内容

  • 没有找到相关文章

最新更新