gpt4 book ai didi

c - 避免在 Lua 中复制字符串

转载 作者:行者123 更新时间:2023-12-02 07:52:28 25 4
gpt4 key购买 nike

假设我有一个 C 程序,它想用两个字符串调用一个非常简单的 Lua 函数(假设两个逗号分隔的列表,如果列表完全相交则返回 true,否则返回 false)。

最明显的方法是使用 lua_pushstring 将它们压入堆栈。 ,它工作正常,但是,从文档来看,它看起来像 lua_pushstring,但会复制字符串供 Lua 使用。

这意味着要跨越到 Lua 函数将需要两个字符串副本,我可以通过在 C 中重写 Lua 函数来避免。有没有办法安排事情,以便现有的 C 字符串可以在 Lua 端重用为了性能(或者 strcpy 成本无论如何都会变得微不足道)?

从我目前的调查来看(我最初几个小时认真研究 Lua),lite userdata似乎是我想要的那种东西,但是以字符串的形式。

最佳答案

不可以。当你调用 lua_pushstring() 时,你不能禁止 Lua 复制字符串。 .

原因:除非,内部garbage collector将无法释放未使用的内存(例如您的 2 个输入字符串)。

即使您使用轻量级用户数据功能(在这种情况下这将是一个矫枉过正),您也必须使用 lua_pushstring()稍后,当 Lua 程序要求输入字符串时。

关于c - 避免在 Lua 中复制字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2855475/

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