我剛發現有一個STATUS_STACK_BUFFER_OVERRUN和一個STATUS_STACK_OVERFLOW。那兩個有什麼區別?我只是發現Stack overflow (stack exhaustion) not the same as stack buffer overflow,但要麼不能解釋它,要麼我不理解它。你能幫我嗎?STATUS_STACK_BUFFER_OVERRUN和STATUS_STACK_OVERFLOW有什麼區別?
問候 托比亞斯
我剛發現有一個STATUS_STACK_BUFFER_OVERRUN和一個STATUS_STACK_OVERFLOW。那兩個有什麼區別?我只是發現Stack overflow (stack exhaustion) not the same as stack buffer overflow,但要麼不能解釋它,要麼我不理解它。你能幫我嗎?STATUS_STACK_BUFFER_OVERRUN和STATUS_STACK_OVERFLOW有什麼區別?
問候 托比亞斯
考慮以下棧在內存中向下增長:
+----------------+
| some data | |
+----------------+ | growth of stack
| 20-byte string | V
+----------------+
limit of stack
當你寫30個字節的20字節的字符串時,會發生緩衝區溢出。這會損壞進入堆棧的進一步數據('某些數據')。
堆棧溢出是當您嘗試將其他上的其他堆棧溢出到堆棧已滿的時候(它表示「堆棧限制」)。堆棧的最大尺寸通常受到限制。
Stackoverflow
時,有內存中沒有更多的空間分配給您的數據,並buffer overrun
又名buffer overflow
時調用程序超支緩衝區邊界寫入/在內存部分意外(需要更多的內存比預期)覆蓋數據出現。
很容易,你可以通過閱讀標籤stackoverflow和buffer overflow的描述來理解這一點。