gpt4 book ai didi

c - 将大型二进制数据从 Lua 传递到 C 的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-04 00:21:46 24 4
gpt4 key购买 nike

我有一个应用程序,我可以通过 LuaSockets 从网络 (500KB) 获取大量二进制数据。 (还没有实现这部分)。据我所知,这些数据将存储在某种字符串、表格或数组中。

我需要对这些数据进行复杂的处理,并且我有一个现有的、经过验证的 ANSI-C 库,我需要将数据传递给 C。我看过的方法通常是在调用堆栈中传递数据由于数据大小,对我不起作用。

现有的 ANSI-C 库需要一个指向数据和大小的指针。我可能可以用一个新的 API 包装这个 API,它逐字节地排除数据,最后一旦确定了整个大小就调用真正的 API 但这意味着从 Lua 对某些 C 函数的大量调用并且不是首选,因为我想要性能.

将这个大数据传递给 C 的最佳方法是什么? (我考虑过写入文件并传递文件名,但这不是首选,我真的想要直接内存传递)

最佳答案

假设 LuaSocket 以字符串形式提供数据,那么它真的很简单。

您的 C 应用程序将直接从 Lua 传递字符串。所以它在 Lua 堆栈上。使用 lua_tolstring 获取字符串及其大小。这将返回一个指向 Lua 拥有的内存的指针(因此您需要确保它保留在 Lua 堆栈或注册表中或在您使用它时的某个地方,以防止 Lua 对其进行垃圾收集)。然后将该字符串+大小传递给您选择的 API。

关于c - 将大型二进制数据从 Lua 传递到 C 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12998871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com