gpt4 book ai didi

c++ - 在 C++ 中解决 StackOverFlowException

转载 作者:行者123 更新时间:2023-11-30 00:39:57 25 4
gpt4 key购买 nike

我正在尝试编写一个程序,用于使用递归在 C++ (VS2010) 中对数组元素进行选择排序。当我将数组的大小增加到 10000 时,该程序对于数组大小小于 10 的较小数组没有任何问题,我正面临 stackoverflow 异常。我该如何解决这个问题?

感谢您到目前为止的回答。我的想法不是对数组进行排序,而是使用递归对大型数组进行排序,并命中 stackoverflow 异常。我在这个练习背后的主要想法是学习解决 stackoverflow 异常的方法,而不是对数组进行排序。

selectionSortRecursive(int a[], int startindex, int endindex)
{
if (startindex<endindex)
{
int s = startindex;
for (int index=startindex+1;index<endindex;index++)
{
if (a[s]>a[index])
s=index;
}
if (s>startindex)
{
a[s]=a[startindex]+a[s];
a[startindex]=a[s]-a[startindex];
a[s]=a[s]-a[startindex];
}
selectionSortRecursive(a, startindex+1, endindex);
}

}

最佳答案

要么增加堆栈的大小(这可以通过 STACK 链接器选项完成),要么——这是一个更好的选择——改进或替换你的算法。听起来递归算法可能不适合您需要处理的数据类型,但也许您可以通过在每个方法调用中使用更少的局部变量和/或参数来改进事情,从而使堆栈帧更小。

关于c++ - 在 C++ 中解决 StackOverFlowException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7655217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com