设为首页 加入收藏

TOP

Lua学习笔记(十六) (二)
2014-11-23 22:37:03 来源: 作者: 【 】 浏览:5
Tags:Lua 学习 笔记 十六
, (lua_Number)pUData->data[idx]);

return 1;

}

lua中设置和获取值的代码如下:

view sourceprint

arr[1] = 100

print(arr:get(1)) // 没有arr[1]的原因在于元表中的__index属性被用来指向元表本身.

其他函数大同小异. 有意思的是__gc事件.

在lua中的变量都是引用, 当一个对象没有任何变量引用的时候, 就会被lua的gc回收.

在lua中这样写, 就会让代码回收:

view sourceprint

arr = nil

在相应__gc事件的C/C++函数中, 我们就能对刚才申请的内存进行释放:

view sourceprint

int ReleaseArray( lua_State* pState )

{

LuaArray* pUData = (LuaArray*)lua_touserdata(pState, 1);

float* pExData;

memcpy_s((void*)&pExData, sizeof(float*), (void*)pUData->data, sizeof(float));

delete [] pExData;

return 0;

}

userdata+metatable的机制, 让我们能从C/C++的角度为lua提供数据和类型的扩展. 本文中对这套机制的使用方法仅仅是一个简陋的实验方法, 具体项目中可以加入许多改进以应对不同需求.

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU 1316 How Many Fibs 下一篇指针的使用方法【三】

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: