《Writing Clear Code---- Microsoft Techniques for Developing Bug-free C Programs 》摘录

  3,  讨论了malloc,free,realloc三个函数的“外壳”包装,分别为bool fNewMemory(void **ppv,size_t size); void FreeMemory(void *ppv); bool fResizeMemory(void **ppv,size_t Newsize);
 #define bGarbage 0xA3
bool  fNewMemory(void **ppv, size_t size)
{

  byte **ppb = (byte**) ppv;
  ASSERT( ppv!=null && size>0 );
  *ppb =(byte*) malloc(size);
  #ifdef DEBUG
  {
     if( *ppb != NULL)
     {
       memset( *ppb, bGarbage ,size);
     }
  }
  #endif
  return ( *ppb != NULL);
}

4,     代码中不会自己生出错误来,错误是程序员编写新代码或者修改现有代码的产物。如果你想发现代码中的错误,没有哪个办法比在对代码进行编译时对其进行逐条跟踪更好。
        虽然直观上你可能认为对代码进行走查会花费大量的时间,但这是不对的。刚开始进行代码的走查确实要多花一点时间,但当这一切习惯成自然之后并不会多花多少时间,你可以很快地走查一遍。
       一定要对每一条代码路径进行逐条的跟踪,至少要跟踪一遍,尤其是对代码中的错误处理部分。不要忘记 &&、|| 和?:这些运算符,它们每个都有两条代码路径需要进行测试。
        在某些情况下也许需要在汇编语言级对代码进行逐条的跟踪。尽管不必经常这样做,但在必要的时候不要回避这种做法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值