Lua C API不适用于指针

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Lua C API不适用于指针相关的知识,希望对你有一定的参考价值。

这就是我做的。我在C ++代码中创建了一个struct和一个静态函数

struct ItemDefinition {
  int64_t price;
};
int static getPrice(lua_State* L) {

  ItemDefinition* def = (ItemDefinition*)lua_touserdata(L, 1);
  printf("%p
", def);
  printf("%d
", def->price);
  return 0;
}

我还在lua中注册了该函数并初始化了一个ItemDefination对象。

ItemDefinition def;
def.price = 120;
lua_pushlightuserdata(lua_state_, (ItemDefinition*)&def);
lua_setglobal(lua_state_, "def");
luaL_Reg module[] = {{"getPrice", &getPrice}, {NULL, NULL}};

从我的Lua脚本中,我只是简单地调用该函数

getPrice(def)

如果我打印出def的地址,如果工作正常。所以我确信该函数被成功调用。但是,如果我想要获得def->price,我将从地址消毒剂"==283789==ERROR stack use after return"得到一个错误我不熟悉。你能帮忙解决问题所在吗?

答案

解决问题,NVM。这实际上是因为指针问题。

以上是关于Lua C API不适用于指针的主要内容,如果未能解决你的问题,请参考以下文章

添加和查询指针不适用于 Parse.com 的 REST API

主题不适用于片段

onActivityResult 未在 Android API 23 的片段上调用

Facebook状态回调不适用于片段

CORS 问题:C# API 请求适用于一个域,但不适用于另一个域

Android列表视图不适用于片段