LuaJIT FFI在释放内存时崩溃了。

我创建了一个cdata对象:

session = ffi.new("GAMESession*[1]", {})

我把它传递到我的C++函数中:

GAMEDLL.GAME_close(session[0])

那个C++函数有这段代码:

GAMEErrorCode
GAME_close(GAMESession *match)
{
   if (!match) {
      return GAME_BAD_SESSION;
   }
   delete match;
   return GAME_SUCCESS;
}

运行这个C++函数会导致我的项目崩溃,这也是这样:

ffi.C.free(session)

我该如何正确释放这块内存?

额外说明:

我必须有“GAMESession*[1]”才能正确地将对象传递给其他C++函数:

GAME_start(GAMESession **session)
点赞