2017/09/23
这周 lua luna 编译成dll 供gameserver使用
寻宝使用经验丹部分 lua实现,
1 用数据库字段控制 是否重新加载lua代码
2 lua main里面存lua里面的所有模块 全局的 供不同的部分 调用
3 luaconst里面存 c++里面的常量 或者一些公共指针
4 c++调lua通过lua_call_table_function
5 lua里面调c++通过 传进去的变量 可以是指针 调用c++中已经声明给lua的方法
6 配置文件cfg读取通过lua读 可以随时更改随时读
7 lua path第一次添加一次后面不加 通过判断模块是否nil
8 gmatch匹配解析文件
9 :参数比.要多一个
10 tonumber string-int table.insert如果表为空会失败
11 __gc(){} 需要写 不要让lua清理 内存管理还是c++来做
现在问题是项目太大 如何有效合理的移植c++到lua 只能先部分 以后的部分用lua写 之前的先不动
lua的垃圾回收
collectgarbage collect 收集一次,count 查看现在有多少内存占用
可以看到所有local的变量或者表,都会在执行collect前后 消失
但是未声明为local的则没有,
需要在收集之前将非local的表置为nil 然后调用collect的话,内存就回收了
lua自己会定期调用collect的,我们不必手动调用 注意非local置nil就行了
这周 lua luna 编译成dll 供gameserver使用
寻宝使用经验丹部分 lua实现,
1 用数据库字段控制 是否重新加载lua代码
2 lua main里面存lua里面的所有模块 全局的 供不同的部分 调用
3 luaconst里面存 c++里面的常量 或者一些公共指针
4 c++调lua通过lua_call_table_function
5 lua里面调c++通过 传进去的变量 可以是指针 调用c++中已经声明给lua的方法
6 配置文件cfg读取通过lua读 可以随时更改随时读
7 lua path第一次添加一次后面不加 通过判断模块是否nil
8 gmatch匹配解析文件
9 :参数比.要多一个
10 tonumber string-int table.insert如果表为空会失败
11 __gc(){} 需要写 不要让lua清理 内存管理还是c++来做
现在问题是项目太大 如何有效合理的移植c++到lua 只能先部分 以后的部分用lua写 之前的先不动
lua的垃圾回收
collectgarbage collect 收集一次,count 查看现在有多少内存占用
可以看到所有local的变量或者表,都会在执行collect前后 消失
但是未声明为local的则没有,
需要在收集之前将非local的表置为nil 然后调用collect的话,内存就回收了
lua自己会定期调用collect的,我们不必手动调用 注意非local置nil就行了