這篇文章主要介紹了linux棧為什么會(huì)溢出的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇linux棧為什么會(huì)溢出文章都會(huì)有所收獲,下面我們一起來看看吧。
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),巴林右旗網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:巴林右旗等地區(qū)。巴林右旗做網(wǎng)站價(jià)格咨詢:028-86922220
在linux中,棧溢出的原因是系統(tǒng)棧是由高地址往低地址增長(zhǎng),而數(shù)據(jù)的寫入是按低地址往高地址的順序?qū)懭?,所以程序一旦沒有對(duì)輸入的字符數(shù)量做出限制,就會(huì)存在數(shù)據(jù)溢出當(dāng)前棧的可能。棧溢出是緩存區(qū)溢出的一種,本質(zhì)上是寫入棧的數(shù)據(jù)超過棧的大小造成的。
本教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。
概述
棧,就是那些由編譯器在需要的時(shí)候分配,在不需要的時(shí)候自動(dòng)清除的變量的存儲(chǔ)區(qū)。里面的變量通常是局部變量、函數(shù)參數(shù)等;和堆相比,棧通常很小,在Linux下,通過ulimit -s可以查看棧的大小。
所謂棧溢出,是緩沖區(qū)溢出的一種,本質(zhì)上是寫入棧的數(shù)據(jù)超過棧的大小,使得數(shù)據(jù)寫入其他單元,往往造成不可預(yù)期的后果,最常見的就是程序崩潰。
造成棧溢出的原因
系統(tǒng)棧是由高地址往低地址增長(zhǎng)的, 而數(shù)據(jù)的寫入是按低地址到高地址的順序?qū)懭? 如果程序沒有對(duì)輸入的字符數(shù)量做出限制, 就存在數(shù)據(jù)溢出當(dāng)前棧幀以及覆蓋返回地址的可能, 從而實(shí)現(xiàn)控制程序的執(zhí)行流。
實(shí)例如下
一個(gè)棧溢出的程序:
關(guān)于“l(fā)inux棧為什么會(huì)溢出”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“l(fā)inux棧為什么會(huì)溢出”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。