c++ - Lua C API 不适用于指针

标签 c++ c lua

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

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

  ItemDefinition* def = (ItemDefinition*)lua_touserdata(L, 1);
  printf("%p\n", def);
  printf("%d\n", 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,我会从 address sanitizer 收到错误消息“==283789==ERROR stack use after return” 我对这两个都不熟悉 .您能帮忙看看问题出在哪里吗?

最佳答案

解决问题,NVM。其实是因为指针的问题。

关于c++ - Lua C API 不适用于指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49075630/

相关文章:

c++ - 如何通过 RS232 连接到 Zebra 打印机?

c++ - 为什么派生类中的虚析构函数为空?

c++ - 用于 makefie 构建的 C++ 程序的图形化免费调试器 (Windows XP)

python - pybind11:使用设置工具链接

c - while(true) 和 for(;;) 之间有什么区别?

c - 使用 ar 命令时,未创建库

lua - 如何获得在 love2d 上工作的增量时间

c - 无法在 Windows 操作系统上的 Eclipse 中交叉编译 C

random - 制作一个没有二元运算符的噪声函数?

string - 如何在lua中string.find方括号字符?