创建stackoverflow的函数有多少?

时间:2012-02-28 02:11:44

标签: c++ windows memory windows-xp stack-overflow

在使用带有2GB RAM的Visual C ++的Windows XP上,创建堆栈溢出的同时必须在堆栈上有多少个函数? (即在递归函数中)

有没有一种简单的方法可以为其他类似情况计算出来?

2 个答案:

答案 0 :(得分:3)

没有办法只从编译器中知道。堆栈溢出是因为堆栈溢出而发生的。堆栈的大小会根据函数的参数,函数使用的局部变量以及编译器优化而增长。甚至有一些C99函数我相信它会直接从堆栈中分配空间。

堆栈大小的限制由编译器开关确定,而不是您计算机中的RAM大小。因此溢出需要多少次调用与编译器设置有关,而不是内存。

这不是你可以确定先验的东西。至少,不是琐碎的。

答案 1 :(得分:0)

您可以尝试无限递归。这是堆栈溢出的常见原因之一。

int f() { g(); } int g() { f(); }