lua2.1 C操作lua的须知细节

本文介绍了C调用Lua函数时的栈管理机制,包括CBase的概念及其变化、如何获取Lua函数返回值及栈中具体值的方法。强调了调用结束后结果必须出栈以避免内存耗尽。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)CBase在C调用lua函数的时候可用,它表示了最后参数的后面一个对象相对与栈底的偏移值。

 

2)通过lua_call可以增加CBase,目标函数有多少返回值它就增加多少(将结果整合到栈上,整合到栈上是为了能找到这个值)。

如果我们总是不断地调用lua函数,那么CBase会不断地增加,直到内存耗光,所以在调用完

一个lua函数之后一定要将结果出栈。(很遗憾的是现在暂时没有发现2.1中有能将CBase变小的机制)

我们通过lua_getxxx(offset)系列来获得lua函数的返回值。

 

3)每次C调用lua的一个函数结束之后,CBase一定是指向栈顶的。

 

4)C调用lua的函数结束后,通过lua_getparam(n)可以得到第n个返回值的栈底偏移。

 

5)函数lua_getnumber(栈顶偏移)可以从lua的栈中取到具体值,也就是呼应了第一点中说的要将结果整合到栈上这个说法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值