У меня есть void *
для созданного C ++ объекта, который я передаю Lua, используя lua_pushlightuserdata()
. Lua может выполнить некоторые действия с этими легкими пользовательскими данными, передав их в Lua CFunctions и получив их с помощью lua_touserdata()
. В какой-то момент в будущем объект C ++ разрушается его владельцем (C ++), освобождается память и устанавливается значение null. Однако у Lua есть ссылка на этот указатель, он не знает, что он был уничтожен.
Теперь мои функции Lua, которые принимают эти пользовательские данные, проверяют правильность указателя. Но как лучше всего информировать Lua о том, что их ссылка на легкие пользовательские данные больше не действительна? Я предоставляю Lua функцию IsValid(lightuserdata)
, чтобы она могла запрашивать статус? Или есть лучший подход, который я пропускаю.