(Lua C API в C++) Освобождает ли Lua пользовательские данные автоматически? ⇐ C++
(Lua C API в C++) Освобождает ли Lua пользовательские данные автоматически?
У меня есть код, в котором я создаю пользовательские данные (круг), которые передаются в Lua, которые я также сохраняю как указатель на C++ и помещаю в вектор. После вызова lua_close(L) я пытаюсь удалить указатель, но это приводит к сбою программы. Я также пробовал бесплатно, но результат тот же
Из этого поста я узнал, что Lua автоматически освобождает пользовательские данные, и поэтому мне не нужно удалять указатель. Это правда?
Я настроен скептически, потому что после того, как я закрываю Lua с помощью lua_close(), я все еще могу получить доступ к кругу, перемещать его, рисовать и т. д.
Если я не удалю указатель на пользовательские данные, вызовет ли это утечку памяти?
Я пробовал удалить и освободить указатель, делая это перед закрытием Lua, но все просто вылетало
Вот как я создаю пользовательские данные
int Wrap_createCircle(lua_State* luaState){ Радиус плавания = lua_tonumber(luaState, 1); CircleShape* круг = (CircleShape*)lua_newuserdata(luaState, sizeof(CircleShape)); новый (круг) CircleShape (радиус); luaL_getmetatable(luaState, "CircleMetaTable"); lua_setmetatable (luaState, -2); возврат 1; }
У меня есть код, в котором я создаю пользовательские данные (круг), которые передаются в Lua, которые я также сохраняю как указатель на C++ и помещаю в вектор. После вызова lua_close(L) я пытаюсь удалить указатель, но это приводит к сбою программы. Я также пробовал бесплатно, но результат тот же
Из этого поста я узнал, что Lua автоматически освобождает пользовательские данные, и поэтому мне не нужно удалять указатель. Это правда?
Я настроен скептически, потому что после того, как я закрываю Lua с помощью lua_close(), я все еще могу получить доступ к кругу, перемещать его, рисовать и т. д.
Если я не удалю указатель на пользовательские данные, вызовет ли это утечку памяти?
Я пробовал удалить и освободить указатель, делая это перед закрытием Lua, но все просто вылетало
Вот как я создаю пользовательские данные
int Wrap_createCircle(lua_State* luaState){ Радиус плавания = lua_tonumber(luaState, 1); CircleShape* круг = (CircleShape*)lua_newuserdata(luaState, sizeof(CircleShape)); новый (круг) CircleShape (радиус); luaL_getmetatable(luaState, "CircleMetaTable"); lua_setmetatable (luaState, -2); возврат 1; }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Citizen: /scripting/lua/scheduler.lua: 90: Попытка назвать нулевое значение (Upvalue 'fn')
Anonymous » » в форуме CSS - 0 Ответы
- 10 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Citizen: /scripting/lua/scheduler.lua: 90: Попытка назвать нулевое значение (Upvalue 'fn')
Anonymous » » в форуме CSS - 0 Ответы
- 14 Просмотры
-
Последнее сообщение Anonymous
-