QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 631|回复: 2

一个令我十分头疼的问题,请帮忙!

[复制链接]
发表于 2004-11-2 02:52:01 | 显示全部楼层 |阅读模式
我在写操作系统的磁盘调度算法的时候,c程序通过了gcc的编译,但是当我运行的时候他却提示我发生了段错误。我想尽了办法,终于找到了他发生在什么地方,但是经过不断的测试还是灭有什么进展。希望高手们能指点一下,不胜感谢。我把出错的代码写在下面:

  srand((int)getpid());

    S=(int)rand()%65535;
      
     for(i=0;i<total_instruction;i+=1)          /*产生指令队列*/
        {
        a=S;                               /*任选一指令访问点*/
        a[i+1]=a+1;                         /*顺序执行一条指令*/
        a[i+2]=(int)rand()%65535;          /*执行前地址指令m’*/
        a[i+3]=a[i+2]+1;                         /*执行后地址指令*/
        S=(int)rand()%65535;
        }
          for(i=0;i<total_instruction;i++)  /*将指令序列变换成页地址流*/
        {      
                page=a/10;
                offset=a%10;
        }
当我将65535改为290以下的数值的时候,他基本上不会在提示段错误的信息。但是这不符合整个试验的目的。所以还是想用较大的数,来进行下面的计算。
我不知道这是为什么,请赐教。
不胜感谢!
发表于 2004-11-2 10:24:26 | 显示全部楼层
我想内核版的大虾对这个问题有更好的解释!至少我是不懂的啦
回复

使用道具 举报

发表于 2004-11-2 10:24:34 | 显示全部楼层
段错误的原因都是访问了不能访问的内存,例如数组越界,访问已经释放的内存等,只有这么一段还得猜,太累了,没法帮你。用gdb调试吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 05:38 , Processed in 0.038860 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表