Должен ли метаметод __gc полных пользовательских данных освобождать () его память?

Asked
Viewd869

3

У меня есть полные пользовательские данные в модуле Lua, написанные на C. Пользовательские данные имеют метаметод __gc(), который вызывается сборщиком мусора. Освобождает ли интерпретатор lua память пользовательских данных после вызова __gc(), или мне нужно free() внутри __gc()?

1 ответов

8

Вы не должны освобождать память, так как вы не выполняли malloc () сами; Lua сделает и то и другое за вас. Фактически, память даже не собирается в том же цикле сборки мусора, как в разделе 2.10.1 в Справочное руководство по Lua 5.1 объясняет.