上一页 1 2 3 4 5 6 7 ··· 9 下一页
摘要: MyMap.erase(Itor++);//在windows下也可以Itor = MyMap.erase(Itor),但是在linux下不行。一个是把指针定为const 。就是不能修改指针。也就是char * const p一个是把指针指向的内容定为const 。就是不能修改指针指向的内容 也就是c... 阅读全文
posted @ 2014-04-28 20:38 ghost&240 阅读(505) 评论(0) 推荐(0) 编辑
摘要: 最近写paintsnow::start时出现了一个非常麻烦的BUG,程序的Release版本大约每运行十几次就会有一次启动时崩溃(Debug版本还没崩溃过),崩溃点也不固定。经过简单分析之后,确定是线程同步的问题。于是便修改了线程通信的代码,并使用pthread_mutex_lock/unlock来防止冲突。重新编译后,崩溃频率有所减少。但是每运行约四十次,还是免不了崩溃一次,而且冷启动时崩溃概率更大。在VC中的Release版本中设置Generate Debug Info后,重复多次运行程序,好不容易得到了几次崩溃记录。综合这几次的崩溃点,可以发现崩溃基本都发生在重分配内存(operator 阅读全文
posted @ 2014-01-19 20:49 ghost&240 阅读(6023) 评论(0) 推荐(1) 编辑
摘要: 可以用这样的方法产生类似foreach的功能:function printargs(...) local num_args = select("#", ...) for i = 1, num_args do local arg = select(i, ...) print(i, arg) endend> printargs("alpha", "beta", "gamma")1, alpha2, beta3, gamma这个功能比之前的foreach实现方式(for i=1, #tbl do)有一个优点: 可以 阅读全文
posted @ 2014-01-14 11:29 ghost&240 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 云风的:http://blog.codingnow.com/2012/03/dev_note_13.html内存碎片优化:tcmalloc 性能工具:profile内存泄漏工具:valgrind(valgrind --leak-check=full ./test),gdb(gdb ./test core.1999 -> where)内存泄露检测使用tcmalloc的程序,用valgrind无法检测内存泄露,可以使用google-perftools提供的heap checker使用方法: which pprof /usr/local/bin/pprofexport PPROF_PATH=/ 阅读全文
posted @ 2013-11-18 16:44 ghost&240 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 偶遇一个事情,需要在C里面嵌入Lua代码,这真是痛苦了我好久….不知道为啥lua默认编译没有生成.so 的动态链接库,需要修改Makefile生成liblua.so,我用的版本是5.2一、先修改根目录的 Makefile修改一行TO_LIB= liblua.a liblua.so二、再修改src的Makefile注意,请搜索关键字,第二行是需要修改的,第一行,和第三行是粘贴的,至于粘贴的位置嘛,你看样子比较像的就粘贴一起吧第三行的开始是tab键LUA_SO=liblua.soALL_T= $(LUA_A) $(LUA_T) $(LUAC_T) $(LUA_SO)$(LUA_SO): $(COR 阅读全文
posted @ 2013-11-13 11:21 ghost&240 阅读(3962) 评论(0) 推荐(1) 编辑
摘要: LUA modue require package 区别2011-01-19 12:41:35|分类:默认分类|标签:luapackagemodulerequire加载|字号订阅【lua 5.1 的 module】lua 从 5.1 开始终于官方提供统一的 module 实现标准了,这是个值得庆幸的事。今天读了下相关的源码和文档,把这套机制搞清楚了,还是很巧妙的。从简洁这个角度看,要比 python 强 :)有一点容易被忽略掉(我的同事在用的时候就忽略掉了),module 指令运行完后,整个环境被压栈,所以前面全局的东西再看不见了。比如定义了一个 test 模块,使用module(" 阅读全文
posted @ 2013-08-22 17:55 ghost&240 阅读(608) 评论(0) 推荐(0) 编辑
摘要: http://www.acejoy.com/forum.php?mod=viewthread&tid=3172&reltid=3173&pre_thread_id=0&pre_pos=1&ext=CB 阅读全文
posted @ 2013-08-17 16:01 ghost&240 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 先要将proto文件编译成.pb文件,然后再动态绑定实现lua protobuffer,这就需要了解云风做的pbc的项目,地址为:https://github.com/cloudwu/pbc/blob/master/binding/lua/README.md具体的方式是,下载pbc的项目;在pbc/binding/lua下面编译出protobuf.so放在LUA_PATH下面,或者将protobuf.lua放在LUA_PATH下,就可以调用protobuf中的库方法cd pbc/binding/luamake如果提示-fPIC-->删去pbc-master/build/o下的所有文件-- 阅读全文
posted @ 2013-08-12 16:03 ghost&240 阅读(10084) 评论(3) 推荐(0) 编辑
摘要: 使用下面方式可保存lua任何值,目前只实现fucntion的保存,且无参数。如果需要实现参数,可自己扩展:可实现下面方式:CFun( lua_fun ) -- okCFun( function() print("Hello world") end ) --oklocal xxx = function print("Hello world" ) endCFun( xxx ) --oklua_value.h#ifndef __LUA_VALUE_H__#define __LUA_VALUE_H__extern "C" {#include 阅读全文
posted @ 2013-08-01 16:06 ghost&240 阅读(673) 评论(0) 推荐(0) 编辑
摘要: gcc编译gcc -I/usr/local/include/ -L/usr/local/lib/ -lm -o engine_mlisten_lua ./src/engine_mlisten_lua.c-levent -lpthread -ldl /usr/local/lib/liblua.aLua可以调用C函数的能力将极大的提高Lua的可扩展性和可用性。对于有些和操作系统相关的功能,或者是对效率要求较高的模块,我们完全可以通过C函数来实现,之后再通过Lua调用指定的C函数。对于那些可被Lua调用的C函数而言,其接口必须遵循Lua要求的形式,即typedef int (*lua_CFuncti 阅读全文
posted @ 2013-08-01 11:15 ghost&240 阅读(1015) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 9 下一页