如何安全地从Lua堆栈中读取字符串值?函数lua_tostring和lua_tolstring两者都可能引发Lua错误(longjmp /奇怪类型的异常).因此,应该使用lua_pcall可能的保护模式调用这些函数.但我无法找到一个很好的解决方案,如何做到这一点,并从Lua堆栈获取字符串值到C++.是否真的需要lua_tolstring使用保护模式调用lua_pcall?
实际上使用lua_pcall似乎很糟糕,因为我想从Lua堆栈中读取的字符串是存储的错误消息lua_pcall.
使用lua_type之前lua_tostring:如果lua_type返回LUA_TSTRING,则可以安全地调用lua_tostring以获取字符串,并且不会分配任何内存.
lua_tostring 只在需要将数字转换为字符串时才分配内存.