从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;
}

lua:
SetTimer("Durp", 10);

我从行中收到“0x76C44598的第一次机会异常:Microsoft C++异常:内存位置0x00D7F588的char”
std::string callback = lua_tostring(pLua, 0);

当我调试代码并在异常弹出时按继续键时,它将随机变量抛出该变量。 double delay也是如此。

但是当我说:
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/

10-10 19:12