При анализе переменных из lua 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" от линии
std::string callback = lua_tostring(pLua, 0);
Когда я отлаживаю код и нажимаю кнопку «Продолжить», когда всплывает исключение, он превращает случайные переменные в переменная. То же самое касается double delay
.
Однако, когда я говорю:
std::string callback = lua_tostring(pLua, -2);
double delay = lua_tonumber(pLua, -1);
Это будет по-прежнему давать исключение, но правильные переменные выбрасываются в
Если выбрано исключение, переменная, безусловно, не будет содержать допустимого значения. –
0 никогда не является допустимым слотом стека. Первый слот для стека равен 1. –
О, ты совершенно прав, такой глупый контроль над моей. Любая идея, хотя на почему -1 и -2 также возвращали правильные значения? – R4VANG3R