[英]How can I get a stack overflow in C++ and Unix?
我想知道如何通過一個簡單的例子來獲得堆棧溢出錯誤,例如:
int recursSum (int n)
{
return (n==1)? 1:n+recursSum(n-1);
}
我問這個愚蠢的問題,因為我只有一些Segmentation錯誤 ,即使有一個空函數調用自己...
我是否遺漏了某些東西,或者是否有任何保護或阻止我這樣做的事情?
分段錯誤意味着內存保護啟動並阻止您訪問您沒有的內存。 這可能由於各種原因而發生,但是指出的一個原因是堆棧溢出(將堆棧溢出到其他一段內存中)。
如果使用負數或0整數參數調用函數,則將面臨無限遞歸。 但是,編譯器可能會尾部調用優化該特定函數,除了在調試模式下,您永遠不會看到堆棧溢出。 分段錯誤位於其他地方。
堆棧溢出是一種分段錯誤,看起來您的系統只輸出一般錯誤。
您可以在這里閱讀更多內容: http : //en.wikipedia.org/wiki/Segmentation_fault
Foo()
{
float f[1024];
Foo();
}
f是一個虛擬變量,可以幫助快速填充堆棧。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.