免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: mingjwan
打印 上一主题 下一主题

程序中有这样的隐患,怎么查出来。 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2006-09-20 14:04 |只看该作者
原帖由 rngr 于 2006-9-20 13:53 发表
最近搞的程序有N个线程, 个个都死循环没有任何出口.


呵呵,我自己写程序,从不允许有这样的情况发生。

论坛徽章:
0
32 [报告]
发表于 2006-09-20 14:14 |只看该作者
原帖由 rngr 于 2006-9-20 13:53 发表
最近搞的程序有N个线程, 个个都死循环没有任何出口.


死循环没有出口,那的肯定每一轮循环都点做点什么。但是一个循环啥也不错,纯粹占用cpu那就不是大家想看到的了。是吧。

所以我觉得讨论的关键是怎么解决问题。而不是讨论循环这个字眼。

论坛徽章:
0
33 [报告]
发表于 2006-09-20 16:06 |只看该作者
好像跑题了,楼主的意思不是要讨论该不该出现死循环,
楼主这个例子还存在类型不同比较
我举个例子:

  1. unsigned long ul = 0;
  2. while(ul>=0)
  3. {
  4.     ul--;
  5.     ...
  6. }
复制代码

不小心写出这样的代码有时候半天看不出来

论坛徽章:
0
34 [报告]
发表于 2006-09-20 18:49 |只看该作者
原帖由 slay78 于 2006-9-20 16:06 发表
好像跑题了,楼主的意思不是要讨论该不该出现死循环,
楼主这个例子还存在类型不同比较
我举个例子:

  1. unsigned long ul = 0;
  2. while(ul>=0)
  3. {
  4.     ul--;
  5.     ...
  6. }
复制代码

不小心写出这样的代码有时候半天看不出来


呵呵,仔细一些就行了。自己的思路跟着程序走一遍,判断所有可能出现的情况,看看有没有例外、或者赋值上的错误就应该可以了。

论坛徽章:
0
35 [报告]
发表于 2006-09-20 18:50 |只看该作者
原帖由 mingjwan 于 2006-9-20 14:14 发表


死循环没有出口,那的肯定每一轮循环都点做点什么。但是一个循环啥也不错,纯粹占用cpu那就不是大家想看到的了。是吧。

所以我觉得讨论的关键是怎么解决问题。而不是讨论循环这个字眼。


不放心的话循环的每步里都加个nanosleep

论坛徽章:
0
36 [报告]
发表于 2006-09-20 20:43 |只看该作者
b=500
编译器本身不会因为这个不是b=50而警告吧.

论坛徽章:
0
37 [报告]
发表于 2006-09-20 22:51 |只看该作者

那么这个是不是异曲同工呢

#include <stdio.h>

int main(int argc, char **argv)
{
        int i=1024;
        char b=0;
        while (b++<=i) {
                printf("sgsg\n");
        }
        return 0;
}

论坛徽章:
0
38 [报告]
发表于 2006-09-21 09:05 |只看该作者
unsigned char数据类型的值好象是0-255,加不到500

论坛徽章:
0
39 [报告]
发表于 2006-09-21 09:52 |只看该作者
这里面关键是不同类型比较,

论坛徽章:
0
40 [报告]
发表于 2006-09-21 13:07 |只看该作者
不同类型的比较能给个告警也好啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP