一个图像处理被我做了一个半月。。。但是,终于做完啦!哇哈哈哈哈!
简单总结如下:
一. 内存越界
C语言这个缺陷真是被我发挥的淋漓尽致。。。调试过程中无数次的system halted,我被折磨的死去活来~每当PC指针跳转到0×10我就知道:完了,又完了~
结论:1.最好了解系统的内存管理机制。至少,你要了解不同系统malloc的实现方式;
2.仔细考虑内存大小,假设最坏的情况下需要的内存分配情况;
3.如果实在不能确定。。。那就多分点吧。
二. 全局变量的使用
其实这个问题和数据结构有关。设计一个好的数据结构可以大大减少全局变量的使用。
结论:1.最好少用全局变量;
2.如果要用。。。能加static就加static;
3.检查每一个对其赋值的地方;
4.注意初始化。在循环调用的时候记得清零。
三. 算法&数据结构
长久以来我一直有点忽视这个问题。。。在我看来,一个好的算法可以有效的提高效率和节约空间~而一个好的算法会自然而然的要求一个好的数据结构。。。
这是不是和面向对象的思路有点相反?-。-||| 好啦我也承认一个好的数据结构可以使你的算法清晰明了。。。
这个问题很相辅相成~
结论:1.根据你的功能需求灵活的确定实现方式:要速度,要空间,还是要稳定?
2.程序的扩展性始终是考虑要素之一,设计灵活的数据结构可以让你简单的增加功能。
3.有效地拆分模块并定义接口。
4.Debug
一个半月里至少有3/4的时间都在debug,前期没有一个好好设计过程,出现问题就会感觉一片混乱。
结论:1.遇到问题首先要做三件事:思考,思考,再思考;
2.多用ASSERT,多用PRINTF,建立完备的出错机制;
3.不要太依赖调试工具。很多时候它只会让你效率低下;
4.记得注释。因为很可能几个月后,会有一个笨蛋面对你的代码感到一头雾水。。。。。。而且一般情况下,那个笨蛋就是你。
总结over。
本年度还有一天年假没有休~而单位的同事好多都是七天没有休~下周上班,公司会不会就没什么人了?
新的活,又会是什么呢~拜托不要再像这一次这么纠结了!