开发者社区 问答 正文

在Dart中,为什么只有顶级函数才能被用作FFI回调?

在Dart中,为什么只有顶级函数才能被用作FFI回调?

展开
收起
不吃核桃 2024-08-28 08:12:08 80 分享 版权
1 条回答
写回答
取消 提交回答
  • 因为Dart的闭包(即嵌套函数或类的方法)可能包含对外部变量的引用,这些变量在Dart的垃圾回收过程中可能会被移动或删除。由于FFI回调需要在Dart的垃圾回收系统之外被C/C++代码调用,因此它们必须是指向静态分配的内存的指针,而顶级函数满足这一要求。闭包则可能包含对堆上动态分配的内存的引用,这些引用在Dart的垃圾回收过程中可能会变得无效。

    2024-08-28 19:31:42
    赞同 69 展开评论
问答分类:
问答地址: