C API 确保用户资源保持分配的实用方法?

问题描述

我正在实现一种编程语言。我想为该语言的一些核心工具(标记器、解析器、AST 节点、类型推断、代码生成、许多检查器等)提供一个公共 API:其他开发人员可以用来编译/处理/分析/生成的 C 库使用我的编程语言编写程序。

这个库的用户应该向它传递一个源程序(一个 char* 指向一个包含程序的以空字符结尾的字符串),当我的库的任何组件被使用时,它必须保持分配状态。

我认为要求用户保留自己分配的字符串是一种糟糕的设计。我也不喜欢创建源程序副本的想法:它可能是一个大字符串,而且大多数情况下没有必要复制它。我相信最好的解决方案是让我的图书馆拥有字符串的所有权。

然而,字符串可以是静态字符串,或者由 malloc 分配,或者由 mmap 分配,甚至其他东西。那么我的图书馆应该如何在清理期间处理它?

C API 执行此操作的实用方法是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)