Lua 的 C 模块之间如何传递内存块

Lua 的数据类型非常有限,用 C 编写的 Lua 模块也没有统一的生态。在不同模块间传递内存块就是件很头疼的事情。 简单通用的方法就是用 Lua 内建的 string 类型表示内存块。比如 Lua 原生的 IO 库就是这么干的。读取文件接口返回的就是字符串。但这样做有额外的内存复制开销。如果你用 Lua 编写一个处理文件的程序,即使你的处理函数也是 C...

该文章讨论了在Lua中处理文件IO和资源组装的问题。作者介绍了使用字符串、userdata和lightuserdata等不同的数据类型来表示内存块,并提出了使用tuple来承担内存地址、长度和生命周期管理的三个数据。作者认为函数是最合适的选择。

原文中文,约1800字,阅读约需5分钟。发表于:
阅读原文