gpt4 book ai didi

c++ - tolua++:将指针所有权转移到 lua gc

转载 作者:太空狗 更新时间:2023-10-29 21:38:38 25 4
gpt4 key购买 nike

有没有一种方法可以将堆上分配的对象返回给 lua 而无需“缓存”对它们的引用?

考虑以下几点:

class foo
{
char const* bar() const
{
char* s = malloc(...);
...
return s; // << Leak. How to transfer the ownership of 's' to lua?
}
};

如果我将一个字符串返回到分配的内存中,我必须将其删除。有没有办法将所有权转移给 lua?

或者是否有可能让 lua_state* 自己使用 lua_pushstring(...) 实现字符串返回?

最佳答案

您可以使用 lua_pushstring 将您的字符串传递给 Lua函数并在之后释放它:

Pushes the zero-terminated string pointed to by s onto the stack. Lua makes (or reuses) an internal copy of the given string, so the memory at s can be freed or reused immediately after the function returns. The string cannot contain embedded zeros; it is assumed to end at the first zero.

如果您确实希望转让所有权,请考虑将您的字符串包装到适当的 object 中具有自己的元表并实现了 __gc 函数。

关于c++ - tolua++:将指针所有权转移到 lua gc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34719105/

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