[英]Stackoverflow not happening while trying to figure out if memory is being allocated on stack or heap
我想尝试一个更复杂的示例,即在对象中使用new分配内存并在其中进一步分配内存,但是需要确定何时会发生stackoverflow。 因此决定尝试这个例子。 我从main()
调用了foo()
函数,并期望它会产生stackoverflow错误。 没有。 在foo中,我将数组大小增加了几个零,并在foo中又添加了40个这样的数组声明。 仍然没有崩溃。
我正在使用gcc版本4.4.2 20091027(Red Hat 4.4.2-7)(GCC)。 大约1MB以上的堆栈分配不应该产生stackoverflow错误吗?
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自己递归调用,并在每次调用时增加一些计数器。 您会尽快得到您的错。
尝试使用-o0进行优化而不进行编译
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.