| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 488 人关注过本帖
标题:关于C++ Access Violation的错误
只看楼主 加入收藏
cytnm
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2012-12-29
结帖率:0
收藏
 问题点数:0 回复次数:0 
关于C++ Access Violation的错误
进程中PCB结构为:
typedef struct pcb{
    struct pcb *next;                             //下一个进程控制块指针
    char process_name[20];                      //进程名
    int process_number;                          //进程编号
    int process_start_moment;                    //进程启动时刻
    int process_need_time;                       //要求运行时间
    int process_time_slice;                       //时间片
    int process_priority;                          //优先数
}PCB;   

         PCB pcb_table[MAX_PROCESS];              //进程控制块表

PCB *pcb_run=NULL;                        //进程运行队列头指针
PCB *pcb_free=NULL;                       //进程空闲队列头指针
PCB *pcb_ready=NULL;                      //进程就绪队列头指针
PCB *pcb_ready_rear=NULL;                 //进程就绪队列尾指针
PCB *pcb_blocked=NULL;                    //阻塞队列头指针
PCB *pcb_blocked_rear=NULL;               //阻塞队列尾指针

 
这是进程调用中的时间片轮转法的算法:
void RR()
{
    printf("请输入设定的时间片大小:");
            int time_slice;
            scanf("%d",time_slice);
            printf("时间片轮转法调度结果如下:\n");

    if(pcb_ready==NULL)
    {
        printf("ready queue is empty,no process to run.\n");
        return;
    }
    else
    {
        pcb_run=pcb_ready;
        if(pcb_ready==pcb_ready_rear)
        {
            pcb_ready=NULL;
            pcb_ready_rear=NULL;
        }
        else
        {
            pcb_ready=pcb_ready->next;
        }
        pcb_run->next=NULL;


        if(pcb_run->process_need_time>time_slice)
        {
            p=pcb_run;
            p->process_need_time=p->process_need_time-time_slice;
            p->next=NULL;
            if(pcb_ready==NULL)
            {
                pcb_ready=p;
                pcb_ready_rear=p;
            }
            else
            {
               pcb_ready_rear->next=p;
               pcb_ready_rear=p;
            }
        }
        else
        {
            pcb_run=NULL;
            pcb_run->next=NULL;
        }
    }
}

调用这个RR函数时就出现了 Access Violation的错误,为什么呀?
2013-10-30 22:42
快速回复:关于C++ Access Violation的错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027958 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved