gpt4 book ai didi

c++ - 错误内存位置的 Lua 参数

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

从 lua 解析变量时,lua 行为异常。

C++:

int LuaManager::SetTimer(lua_State *pLua)
{
if (!lua_isstring(pLua, 0)) throw "expected: string";
if (!lua_isnumber(pLua, 1)) throw "expected: number";

std::string callback = lua_tostring(pLua, 0);
double delay = lua_tonumber(pLua, 1);
Timer timer = Timer(callback, delay);

return 0;
}

卢阿:

SetTimer("Durp", 10);

我从行中得到“0x76C44598 处的第一次机会异常:Microsoft C++ 异常:内存位置 0x00D7F588 处的字符”

std::string callback = lua_tostring(pLua, 0);

当我调试代码并在弹出异常时按继续键时,它会将随机变量扔到变量中。 双重延迟也是如此。

但是当我说:

std::string callback = lua_tostring(pLua, -2);
double delay = lua_tonumber(pLua, -1);

它仍然会给出异常,但会抛出正确的变量。

最佳答案

我内存中的那一行

std::string callback = lua_tostring(pLua, 0);

应该是

std::string callback = lua_tostring(pLua, 1);

因为 lua 中的索引从 1 开始。

关于c++ - 错误内存位置的 Lua 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28013846/

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