void lua_pop (lua_State *L, int n);
/*Pops n elements from the stack.*/
Что касается того, почему - не могу действительно сказать - есть много возможных причин, не могли бы вы опубликовать несколько примеров кода, который вызвал это?Ниже приведены несколько распространенных (imho) причин.
Lua не должен вызывать утечек памяти, если только вы не использовали легкие пользовательские данные (единственные, которые не управляются сборщиком мусора).
Делали ли вы что-нибудь malloc вместо lua_newuserdata?
Проверяли ли вы размер стека в начале функции?Может быть, вы только что передали столько параметров из Lua (например, вызвав c_func (unpack (огромный_таблицу));)?