随笔分类 -  Bug 小记

记录工作中出现的bug
摘要:在工作中写了这样一段代码: 1 struct xx_param { 2 int index1; 3 int index2; 4 }; 5 6 //func1, func2, func3为三个函数指针 7 8 int init(a_func_t *func1, b_func_t *func2, c_func_t *func3, void *param) 9 {10 struct xx_param *p = (struct xx_param *)param;11 func1(p->index1, p->index2);12 }13 ... 阅读全文
posted @ 2014-03-17 22:20 重归混沌 阅读(327) 评论(0) 推荐(0)
摘要:最近在代码中用了这样一个DLL,采用静态加载方式使用,原型类似如下:XXX_API int xx_func(std::vector &xx_tbl, ..., ...);//代码中会用xx_tbl.push_back(xx);之类的代码向xx_tbl里面填充数据 但是却出现一个奇葩问题,每当调用这个DLL的程序退出时Debug版本有很大概率会崩溃在这个std::vector的析构函数上。 研究了好久才发现,当DLL中调用push_back函数时,其实std::vector的构造函数分配的内存是属于这个DLL的资源,当程序退出时会首先卸载这个DLL程序,那么与他相关的内存也随之被释放。. 阅读全文
posted @ 2014-03-08 15:56 重归混沌 阅读(2836) 评论(0) 推荐(0)
摘要:我一向认为在写代码时,void *滥用是有问题的,在最近的一次代码中, 有类似这样一段代码:1 int send(void *buff, unsigned long size);2 3 int xx_func(char *buff, unsigned long size)4 {5 unsigned send_size;6 .........7 8 send(&buff, send_size);9 return 0;10 } 暂且不论为什么作者会错写成取地址,但其原意是想发送经过处理后的buff里面的内容, 但... 阅读全文
posted @ 2014-02-15 19:32 重归混沌 阅读(362) 评论(0) 推荐(0)