首頁 > 運維 > linux運維 > 主體

linux棧溢位的原因是什麼

WBOY
發布: 2022-06-01 11:12:17
原創
3384 人瀏覽過

在linux中,堆疊溢位的原因是系統堆疊是由高位址往低位址成長,而資料的寫入是依照低位址往高位址的順序寫入,所以程式一旦沒有對輸入的字元數量做出限制,就會存在資料溢出目前棧的可能。堆疊溢位是快取區溢位的一種,本質上是寫入堆疊的資料超過堆疊的大小所造成的。

linux棧溢位的原因是什麼

本教學操作環境:linux7.3系統、Dell G3電腦。

linux堆疊溢位的原因

概述

#棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清除的變數的儲存區。裡面的變數通常是局部變數、函數參數等;和堆疊相比,堆疊通常很小,在Linux下,透過ulimit -s可以查看堆疊的大小。

所謂堆疊溢出,是緩衝區溢位的一種,本質上是寫入堆疊的資料超過堆疊的大小,使得資料寫入其他單元,往往造成不可預期的後果,最常見的就是程式崩潰。

造成堆疊溢位的原因

系統堆疊是由高位址往低位址成長的, 而資料的寫入是按低位址到高位址的順序寫入. 如果程式沒有對輸入的字元數量做出限制, 就存在資料溢出當前棧幀以及覆蓋返回地址的可能, 從而實現控製程序的執行流。

實例如下

一個堆疊溢出的程式:

linux棧溢位的原因是什麼

#推薦學習:Linux影片教學

#######

以上是linux棧溢位的原因是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!