lua拿不到内存的时候不会释放这个内存。稍微改写一下前天的调试函数:
void * MyLuaAlloc(void *ud, void *ptr, size_t osize, size_t nsize)
{
if (nsize == 0)
{
…
}
else
{
if (memTotal - osize + nsize > 5 * 1024 * 1024)
return NULL;
…
}
}
将lua内存限制到5M,这样很快就能到达上限,此时基本上所有需要分配内存的脚本执行都会失败(c++端的lua_pcall()返回错误LUA_ERRMEM)。
在真机上测试,内存到达数百兆级别时,游戏不死但是没有反应,应该是lua写的逻辑已经处于瘫痪状态了。