问题描述
我正在实现一种编程语言。我想为该语言的一些核心工具(标记器、解析器、AST 节点、类型推断、代码生成、许多检查器等)提供一个公共 API:其他开发人员可以用来编译/处理/分析/生成的 C 库使用我的编程语言编写程序。
这个库的用户应该向它传递一个源程序(一个 char*
指向一个包含程序的以空字符结尾的字符串),当我的库的任何组件被使用时,它必须保持分配状态。
我认为要求用户保留自己分配的字符串是一种糟糕的设计。我也不喜欢创建源程序副本的想法:它可能是一个大字符串,而且大多数情况下没有必要复制它。我相信最好的解决方案是让我的图书馆拥有字符串的所有权。
然而,字符串可以是静态字符串,或者由 malloc
分配,或者由 mmap
分配,甚至其他东西。那么我的图书馆应该如何在清理期间处理它?
C API 执行此操作的实用方法是什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)