gpt4 book ai didi

c++ - C语言中有 'minimizing stack overflow of an array'之类的东西吗?

转载 作者:行者123 更新时间:2023-11-30 21:34:40 24 4
gpt4 key购买 nike

有人告诉我如何最小化 C 中数组的堆栈溢出,我可以通过从左到右和从右到左填充数组来实现,类似的事情。但基本上我不明白。请解释一下以便更好地理解。谢谢。

最佳答案

堆栈是分配自动变量的地方

您可以通过分配巨大的对象int x[10000000000]或使用非常深的递归级别来溢出它。多线程环境中可以进一步限制堆栈每个线程的堆栈分配

避免在堆栈上分配的方法是使用指针并使用 malloc 在堆上分配(这是调用 new 的 C 版本),但这需要匹配调用 free,从而增加了代码复杂性。

减少深度递归的方法是可能找到一种更浅(通常更有效)的递归算法。从两侧填充数组可能会导致更浅的递归。

然而,通常更好的方法是将递归算法转换为等效的迭代(循环)算法(通常也可以通过优化递归来完成)。看一个简单的例子:

以下递归:

unsigned mult(unsigned a, unsigned b)
{
return b ? a+mult(a, b-1) : 0;
}

变为以下迭代等效项:

unsigned mult(unsigned a, unsigned b)
{
unsigned ret=0;
while (b-- > 0)
ret+=a;
return ret;
}

关于c++ - C语言中有 'minimizing stack overflow of an array'之类的东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20335269/

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