难以理解的程序bug

有许多雷锋工作在IT领域,其中他们有些做了调试程序,使得找出bug变得不那么困难了。但是,有太多bug平时并不动声色,有些就是当我们找出它们了,也感到难理解。比如下面两个程序,第一个不正常退出,第二个则能够运行完毕。

int main(int arc, char* arv[])
{
       set<long>setSt;
       char gg[125];

       for(long k=0;k < 15;k++)
              setSt.insert(k) ;

       map<string,set<long> >mapSort;

       for(int k=0;k < 15;k++){
              sprintf(gg,"Why.%d",k);
              mapSort.insert(pair<string,set<long> >(gg,setSt) ) ;
       } 

       map<string,set<long> >::iterator itW=mapSort.begin();

       for(int k=0;k < 17;k++){
              if( itW !=mapSort.end() )
                     ;     
              else if( "oldman"== itW->first){
                     cerr << "Passed;" << endl;     
              }
              mapSort.erase(itW++);
       }
       exit(0);
}

int main(int arc, char* arv[])
{
       map<int,string>setSnt;
       map<int,string>::iterator itS;
       char gg[125];

       for(int k=0;k < 125;k++){
              sprintf(gg,"Why.%d",k);
              setSnt.insert(pair<int,string>(k,gg) ) ;
       }

       itS = setSnt.begin();
       for(;;){
              if(itS == setSnt.end()) break;
              setSnt.erase(itS++);
       }

       if(itS == setSnt.end()){
              if(123 == itS->first)
                     cout <<" ignore... " << endl;
              else
                     cout <<" pass test. " << endl;
       }
       exit(0);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值