繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM