簡體   English   中英

如何在運行時檢查堆棧溢出

[英]how stack overflow is checked in runtime

我主要在考慮Windows。

在此類平台上的AFAIK有很多堆棧,每個程序,甚至每個線程都有自己的堆棧,並且每個這樣的線程都可以將字節推入到其上-AFAIK在堆棧溢出的情況下,應在運行時檢查每個此類推入-因此似乎每一次推送都涉及一些成本(類似於數組邊界檢查)-這種檢查的實現方式是如何?

我記得在舊機器上沒有進行檢查,但是一些fff變為000,因此沒有檢查成本,但是今天在Windows平台上,我似乎可能已對每個堆棧都進行了檢查-但我不知道它是如何實現的。

我不知道Windows或Linux平台上的任何完全編譯的語言會在默認情況下調用堆棧邊界檢查。 因此,溢出可用的堆棧空間會導致分段錯誤,如問題( 由於遞歸引起的分段錯誤 )中所述,分段錯誤和堆棧溢出之間有什么區別?

如問題中所觀察到的,不進行邊界檢查的好處是代碼運行更快。 如果出於某些特定原因想要進行邊界檢查,則可以針對該特定情況插入邊界檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM