开发者社区> 问答> 正文

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

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

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

    2024-08-28 19:31:42
    赞同 69 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载