爲了瞭解C++遞歸調用的限制,我嘗試了這個函數!限制C++中的遞歸調用(約5000)?
void recurse (int count) // Each call gets its own count
{
printf("%d\n",count);
// It is not necessary to increment count since each function's
// variables are separate (so each count will be initialized one greater)
recurse (count + 1);
}
當count等於4716時,這個程序停止!所以限制只是4716! 我有點困惑!當計數等於4716時,爲什麼程序停止執行! PS:在Visual studio 2010下執行。 謝謝
無邊界遞歸在某些目標上是可能的。 GCC支持所謂的「拆分堆棧」,它允許堆棧增長,*不連續地*填充可用內存。見http://gcc.gnu.org/wiki/SplitStacks – 2013-04-20 23:26:46
我知道有一個限制,但我想知道這個限制是什麼!我沒想到這個堆棧會在少於5000個電話中爆炸!感謝您的解釋 ! – satyres 2013-04-20 23:27:52
仍然有一個限制,並且仍然(據我所知)沒有辦法檢測到堆棧用完。使用軟件堆棧,至少有一種方法可以檢測堆棧何時耗盡...... – 2013-04-20 23:28:07