要使用Lua的C API,如果可能往栈内压入数据,用户必须自己来确保栈操作不会溢出。
见手册中3.2节关于栈尺寸的描述,最好先使用
lua cclosure 的 upvalue 数量限制群里的朋友遇到循环创建协程导致内存访问错误的情况,也是这个原因。
Lua官方实现中有两个宏,incr_top和api_incr_top,前者是内部用的,带栈空闲空间检测和按需扩展功能,后者不带,而前者用于debug、do、object等内部模块中,后者只用于api模块中(用户可见)。
用户列表中别人的提问表明,5.0版本之前是带自动扩展的。
之前学习Lua源码时候对api_incr_top与incr_top的差异有注意到,但是到现在为止,源码学习暂时中断了(很久了),还没好好研究这个情况。
感谢群友的不懈努力。
阅读(696) | 评论(1) | 转发(0) |