03 2014 档案
摘要:在工作中写了这样一段代码: 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 ...
阅读全文
摘要:最近在纠结于大数据的checksum的计算,算法如下: 1 unsigned long cs_cal(const unsigned char *buff, unsigned long size) 2 { 3 unsigned long cs; 4 5 cs = 0; 6 while (size--) 7 cs += buff[size]; 8 9 return cs;10 } 当文件大于4G后这种计算的龟速就很明显了,在网上看到大牛说MMX指令对于数据计算相当不俗,于是改成下面代码(bug:不对齐部分没有处理,这部分消耗很小,对于效率影...
阅读全文
摘要:最近在代码中用了这样一个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程序,那么与他相关的内存也随之被释放。.
阅读全文

浙公网安备 33010602011771号