栈溢出修改了栈空间之外的内存,假如这段内存是代码,那么程序就会发生错误。
“栈顶将环绕”的“环绕”应该指的是wrap这个单词,意思是“回到原点”,也就是sp回到了栈为空时的状态,这样程序会认为栈是空的,实际上栈已经满了,继续push就会覆盖掉之前的数据。
private static void qsort(int[]a,int low,int high)
{
int pos=Qpass(a, low, high);
qsort(a,low,pos-1);
qsort(a,pos+1,high);
}
没有结束条件,肯定会一致无限地递归下去,直到栈溢出了。。
快速排序的终止条件是:low>=high
即改为
private static void qsort(int[]a,int low,int high)
{
if( low < high)
{
int pos=Qpass(a, low, high);
qsort(a,low,pos-1);
qsort(a,pos+1,high);
}
}
以上就是关于栈溢出会怎么样栈顶将环绕是什么意思全部的内容,包括:栈溢出会怎么样栈顶将环绕是什么意思、java程序错误,错误提示是栈溢出.、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)