请选择 进入手机版 | 继续访问电脑版

OpenWrt

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4084|回复: 2

LUA_TUSERDATA和LUA_TLIGHTUSERDATA的区别

[复制链接]

104

主题

173

帖子

883

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
883
发表于 2014-11-25 12:08:36 | 显示全部楼层 |阅读模式
struct AA
{
...
} a,b;
lua_pushlightuserdata(L, &a);
luaL_getmetatable(L, "classa");
lua_setmetatable(L,-2);                  //a 的 meta 现在是 classa
lua_pushlightuserdata(L, &b);
luaL_getmetatable(L, "classb");
lua_setmetatable(L,-2);                 //a b  的 meta 现在是 classb 因为 lua_pushlightuserdata产生的对象类型是 LUA_TLIGHTUSERDATA 而所有的LUA_TLIGHTUSERDATA类型共用一个 meta 结构




struct AA {
...
} * a, *b;
a = (AA*)lua_newuserdata(L,sizeof(AA));luaL_getmetatable(L, "classa");lua_setmetatable(L,-2);                  //a 的 meta 现在是 classa
b= (AA*)lua_newuserdata(L,sizeof(AA));
luaL_getmetatable(L, "classb");
lua_setmetatable(L,-2);                 //b  的 meta 现在是 classb a  的 meta 还是 classa


lua_newuserdata         内存由LUA分配lua_pushlightuserdata 内存分配得自己分配好了的

回复

使用道具 举报

104

主题

173

帖子

883

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
883
 楼主| 发表于 2018-1-24 20:25:40 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|OpenWrt系统应用网 ( 京ICP备14035914号-1

GMT+8, 2021-8-5 18:33 , Processed in 0.051606 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表