在sjf()中,如果at1 [0]是最小值,则永远不会初始化位置,因此下面的循环可能很容易生成无效地址。
for(z=location;z>0;z--) { at1[z]=at1[z-1]; bt1[z]=bt1[z-1]; pid1[z]=pid1[z-1]; }
当你在 processmode 中运行时,你的初始堆栈很可能是零填充,因此程序中的缺陷被隐藏了。初始线程堆栈中可能包含其他过时数据。
正如评论所指出的,你应该在SO之前尝试使用某种程度的编译器诊断(和主动)。每个人都愿意提供帮助,但是你也应该发展技能来帮助他们。