苦逼的培训第二天了,苦逼的日子还在继续,C语言啊,不会害怕的,继续加油!
今天上午还是培训的是低级错误案例,主要的内容是做练习题,然后是每个小组讨论题目,题目都是一些基本的案例,也是公司实际产品中出现的错误,有些错误是很低级,但是谁也不敢保证这些错误不发生在自己身上,主要的错误归纳为一下几点:
1:字符串拷贝时忘了拷贝‘\0’结束符 2:申请内存时要判断指针是否申请成功,校验指针有效性。 3:内存用完以后一定要释放,而且把指针设置为空 4:还有一些设计结构体大小的问题,特别是结构体对齐方式。结构体对齐字节大小是取 min(机器默认字节,结构体中最大字节)。还应该注意的是short型对齐是从偶数位开 始 的,char可以从任意位置开始等 5:宏定义的一些使用方法,宏中多条语句连接符是\,例如宏定义如下 #define FUNC(A) A++\A=A*10 int A=10; if(A>10) FUNC(A); 执行以后的:A=100;了 6:还有就是大小端的转换 7:不要忘记取地址符 &
今天上午还拖堂好久才完成了低级案例分析这个课程,我们那位尊敬的老师也要回去了。下午的课程是关于代码性能和维护性。主要讲了几下几点:
1:为什么要代码性能的优化?
1:双重循环,小循环在外面,大循环在里面(原因是要看反汇编的代码) 2:循环体内工作量最小 3:重复使用的变量应该缓存起来,避免无所谓的计算 4:避免不必要的内存拷贝 5:较大的结构体作为函数入参时,应该使用结构体指针传递,避免所谓的数据泥团 6:判断语句 把最有可能的放在前面,高概率在前 7:在需要的时候才申请和释放内存 8:日志必须按合适的级别分级打印, 9:操作文件时使用缓存机制
2:性能优化的方法论
1:以空间换取时间,现在存储成本很低了,牺牲空间换时间是值得的 2:使用模板复制 3:减少压栈成本,特别是函数调用,每次函数调用都是压栈处理。函数参数尽量越少越 好,避免使用递归函数 4:改变判断顺序,就是高概率事件放在前面 5:应用层软件遍历查找 6:不建议使用静态函数或变量(影响以后系统打补丁)