- 博客(7)
- 资源 (1)
- 收藏
- 关注
原创 说说“每日构建”-Daily Build
软件开发的每日构建非常重要,如果是ProjectManager或者DevManager,通常很想知道如下内容: 1. 多个开发人员每天都提交code,是否有程序员提交的code导致系统不能编译通过呢? 我想自动检测。 2. 我想每天收到每个build报告,报告内容包含build是否成功,哪些模块build失败. 3. 每天都能保证一个完整的release package并且能唯一区分。 如下的每日构建脚本: 1. 从CVS check out完整代码 2. 部署Build环境,包含copy正确
2010-06-06 11:09:00 385
原创 对象删除后,指针要赋值NULL
看Code 1: class B 2: { 3: }; 4: 5: class A 6: { 7: public: 8: A() 9: { 10: m_pB = new CB; 11: }
2010-06-05 13:12:00 448
原创 软件设计-不是软件开发的万能灵丹妙药!
一年前,出去和同事一块儿去Woodbine打羽毛球,我们不经意间说起了软件设计问题。 对话: 同事A:咱们买的印度公司的那套LIB库怎么样? 我:整体的架构设计是非常好的,虽然能够明显看出是融合了几个架构师的设计思路;但是,一批低水平的程序员在实现的时候太过糟糕,代码丑陋切危机四伏。系统经常随机的crash,并且很难找到真正的问题在哪里! 同事A: 好的软件设计要保证能够更容易定位bug 我:是的。 同事A:所以说,有了bug,如果很难定位,那就是软件设计出的问题!
2010-06-05 12:53:00 337
原创 “指针转换”惹得祸
几年前,调试过一个加密解密算法程序,原来这个程序是在Windows和Linux平台可以顺利编译并运行;我把程序移植到了嵌入式的ArcLinux上,程序可以顺利编译,唯独运行的时候,每次都在地址转换的时候程序崩溃。程序大概如下: 1: void func_special(uint8 * pData, const int DataLen) 2: { 3: int Len = DataLen / 4; 4:
2010-06-05 12:18:00 281
原创 delete[] 的问题
经常有这种case, 使用new char[]申请了一个字符数组,然后,由于写作疏忽,delete的时候忘记加 “[]”了。 从C++的spec来说,new[] 和 delete[]必须必须要配对使用,这样才能保证申请的内存为彻底释放掉;现实中,其实是有一些出入的,一些现在比较流行的编译器通常能够handle这类的case,它们有时候会给出一些警告信息来。譬如:常见的GCC和Visual C++是能够自动用 delete[]来替换程序员的疏忽。 但是,千万要注意的是:这个行为是完全编译器相关的,某些编译
2010-06-04 12:49:00 279
原创 “=”号惹得祸
这一点即使强调一万遍也不为过:在C++中,千万不要把“==”写成”=”;否则你的程序会死的很难看! 但是,现实中即使是那些天才程序员也会犯这种极其愚蠢的错误,但愿大家不要在Check-In代码的时候写上”type error”. 我看不惯这种注释。 上周,由于有大客户要一个DEMO,加班加点实现一个BlueRay Disk的刻录外加transcoding的程序,总是在刻录最后的时候程序crash,提示访问地址非法;但是,怎么看怎么也找不出问题来,总感觉那个地址好像被其他模块或者线程修改了,也就是可能有其
2010-06-04 12:36:00 340
原创 都是“引用”惹得祸!
好久没写东东;今天写点。 很多人喜欢使用C++中的引用,尽力用它来替代指针的使用,来防止指针固有的为人诟病的缺陷;几年前,我所在的一个大型C++项目就是这样的,一些天才的技术狂人非常偏好使用引用,导致引用充满角落中。最开始,我还觉得用的不错,效率高还不失简洁性,相信很多人都有此看法。不过,一次痛苦的调试经历让我开始重新审视C++中的引用。 大概的程序是这样的(实际程序比它要复杂很多,这里为了叙述问题进行简化): 1: class CB 2
2010-06-04 12:03:00 353
SmartCap
2006-08-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人