lua和c/c++交互

lua虚拟栈

lua 和c采用虚拟栈的方式传递数据,栈中的元素是以lua 数据结构的方式存储,c/c++可以从该栈压入数据或者去除数据,通过这种方式实现数据传输,lua中的值由lua来管理,c/c++的值lua不关心,比如c/c++需要一个变量table或者string等,其调用lua提供的接口,由lua产生并且进行内存管理,需要注意的是这里的栈是lua_State的数据栈,其还有调用栈,和Global_State

另外虚拟栈的索引,分为正数索引和负数索引:正数索引是从栈底开始计数,而负数索引是从栈顶开始计数在这里插入图片描述

栈操作api

关于栈的操作
lua_State * luaL_newstate(void);
创建一个新的Lua状态。返回新状态,或者NULL是否存在内存分配错误。
void lua_close(lua_State * L);
销毁lua状态中的所有对象并释放此状态使用的所有动态内存
弹出n个堆栈中的元素 void lua_pop(lua_State * L,int n);
返回堆栈中顶部元素的索引 int lua_gettop(lua_State * L);

C操作栈内数据
常用的入栈函数 lua_push*(lua_State * L, value );

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值