В Lua элементы, на которые больше не ссылаются, собирают мусор (в нужное время).
Это означает, что el_h
и el_s
будут рассматриваться для сбора мусора всякий раз, когда вы их перезаписываете, вам не нужно делать их local
.
Другими словами, объект, который вы получите за el_h
, когда i
= 1, будет помечен для сбора мусора, когда вы назначите el_h
объект, который вы получите за i
= 2. .
Я предполагаю, что tolua ++ будет обрабатывать метатаблицы, так что деструкторы будут вызываться всякий раз, когда объект будет собираться мусором, я никогда не использовал его, так как мне всегда было проще писать код привязки для функций C или C ++ вручную.
Я был бы удивлен, хотя, если tolua ++ будет масштабировать индекс для вас, он не имеет ни малейшего представления, что должен это делать. Вы должны передать тот же аргумент wrapper.getElementAtIndexStackAllocated()
в Lua, что и в C ++.
Обратите внимание, что я использовал "помечено как сборщик мусора". Фактическое время сбора мусора зависит от разных факторов и, как правило, не стоит зависеть от этого. Однако вы можете форсировать сборку мусора, используя collectgarbage("collect")