gpt4 book ai didi

c++ - 尝试确定内存是在堆栈还是堆上分配时,Stackoverflow 没有发生

转载 作者:搜寻专家 更新时间:2023-10-31 00:20:16 26 4
gpt4 key购买 nike

我想尝试一个更复杂的示例,即在对象中使用 new 分配内存并在其中进一步分配内存,但需要确定何时会发生 stackoverflow。所以决定尝试this例子。我从 main() 调用了 foo() 函数,并预计它会给出一个 stackoverflow 错误。它没有。在 foo 中,我将数组大小增加了几个零,并在 foo 中添加了 40 个这样的数组声明。仍然没有崩溃。
我正在使用 gcc 版本 4.4.2 20091027 (Red Hat 4.4.2-7) (GCC)。大约超过 1MB 的堆栈分配不应该给出计算器溢出错误吗?

void foo()
{
double x[100000000];
double x1[100000000];
double x2[100000000];
double x3[100000000];
double x4[100000000];
//...and many more
}

int main()
{
foo();
}

编译为 gcc -o test test.c

最佳答案

使 foo 递归调用自身,并在每次调用时增加一些计数器。你很快就会发现自己的错。

关于c++ - 尝试确定内存是在堆栈还是堆上分配时,Stackoverflow 没有发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6369363/

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