VS报错--- Run-Time Check Failure #2 - Stack around the variable ‘xxx‘ was corrupted,解决方法

编译器是VS2017的,今天开发项目遇到这个问题,记录下:

编译器报错:Run-Time Check Failure #2 - Stack around the variable 'xxx' was corrupted。

看着字面的意思是:运行时检查失败#2 -变量“xxx”周围的堆栈已损坏。

但是代码的逻辑并无误,很是奇怪,后来网上查了才知道解决方法;

【解决方案】

项目---属性---配置属性---C/C++---代码生成---基本运行时检查:

设置为”默认是“,点击应用,确定后即可。

好的,以下是模拟“最短作业优先(SJF)” 调度算法的代码实现: ``` #include <stdio.h> #include <stdlib.h> typedef struct { int arrive; int run; int finish; int total; } Job; double sjf_weighted_time(int* arrival_time, int* run_time, int num) { int i, j, time = 0; double total_time = 0, total_wt = 0, avg_time, avg_wt; Job temp, s[100]; // 初始化作业队列 for (i = 0; i < num; i++) { s[i].arrive = arrival_time[i]; s[i].run = run_time[i]; } // 对作业队列按照运行时间进行排序 for (i = 0; i < num - 1; i++) { for (j = i + 1; j < num; j++) { if (s[i].run > s[j].run) { temp = s[i]; s[i] = s[j]; s[j] = temp; } } } // 计算每个作业的完成时间、周转时间和带权周转时间 for (i = 0; i < num; i++) { s[i].finish = time + s[i].run; s[i].total = s[i].finish - s[i].arrive; total_time += s[i].total; total_wt += (double)s[i].total / s[i].run; time = s[i].finish; } // 计算平均周转时间和带权周转时间 avg_time = total_time / num; avg_wt = total_wt / num; return avg_wt; } int main() { int arrival_time[] = {0, 1, 2, 3}; int run_time[] = {8, 4, 9, 5}; int num = sizeof(arrival_time) / sizeof(arrival_time[0]); double avg_wt = sjf_weighted_time(arrival_time, run_time, num); printf("平均带权周转时间:%.2f\n", avg_wt); return 0; } ``` 以上代码实现了SJF调度算法,并计算了平均带权周转时间。其中,作业队列按照运行时间进行排序,然后依次计算每个作业的完成时间、周转时间和带权周转时间,最后计算平均周转时间和带权周转时间并返回。测试数据为四个作业,分别有不同的到达时间和运行时间。输出结果为: ``` 平均带权周转时间:1.37 ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值