c語言數(shù)據(jù)溢出是如何處理(信息溢出是什么)
信息溢出是什么?
在計(jì)算機(jī)中,當(dāng)要它表示的數(shù)據(jù)遠(yuǎn)超過計(jì)算機(jī)所可以使用的數(shù)據(jù)的意思是范圍時(shí),則產(chǎn)生數(shù)據(jù)的瀉出。
瀉出原因
數(shù)據(jù)類型將近了計(jì)算機(jī)字長的界限變會(huì)出現(xiàn)數(shù)據(jù)流出的情況。會(huì)造成內(nèi)存泄露問題的原因有很多,.例如:
(1)在用非類型安全(non-type-safe)的語言如C/C等。
(2)以不比較可靠的存取的或復(fù)制內(nèi)存緩沖區(qū)。
(3)編譯器設(shè)置的內(nèi)存緩沖區(qū)太東面重要數(shù)據(jù)結(jié)構(gòu)。
因素分析
1.內(nèi)存溢出問題是C語言也可以C語言所固有的缺陷,它們既不檢查一下數(shù)組邊界,又不檢查類型可靠性(type-safety)。咱們都知道,用C/C語言開發(fā)的程序而目標(biāo)代碼太靠近機(jī)器內(nèi)核,加之能夠再ftp連接內(nèi)存和寄存器,這種特性有所提升了C/C語言代碼的性能。只需合算編碼,C/C應(yīng)用程序在不能執(zhí)行效率上必然較大提高其它高級(jí)語言。但,C/C語言會(huì)造成內(nèi)存泄漏問題的可能性也要大眾多。其他語言也存在地內(nèi)存泄露問題,但它來講不是程序員的失誤,完全是應(yīng)用程序的運(yùn)行時(shí)環(huán)境出現(xiàn)錯(cuò)誤功能失常。
2.當(dāng)應(yīng)用程序讀取文件用戶(也可能會(huì)是惡意攻擊者)數(shù)據(jù),趁機(jī)剪切粘貼到應(yīng)用程序界域的內(nèi)存緩沖區(qū)中,卻無法保證緩沖區(qū)的空間足夠時(shí)(另外一點(diǎn),假設(shè)不成立代碼去申請了N字節(jié)大小的內(nèi)存緩沖區(qū),緊接著又向其中復(fù)制遠(yuǎn)遠(yuǎn)超過N字節(jié)的數(shù)據(jù))。內(nèi)存緩沖區(qū)就肯定會(huì)滴下。好好想一想,如果你向盎司的玻璃杯中倒入16盎司水,那你多進(jìn)去的4盎司水咋辦?肯定會(huì)滿到玻璃杯外面了!
3.最重要的是,C/C編譯器界域的內(nèi)存緩沖區(qū)動(dòng)不動(dòng)愛西南邊重要的數(shù)據(jù)結(jié)構(gòu)。假設(shè)不成立某個(gè)函數(shù)的堆棧緊接在在內(nèi)存緩沖區(qū)后面時(shí),其中保存的函數(shù)直接返回地址可能會(huì)與內(nèi)存緩沖區(qū)東北邊。此時(shí),惡意攻擊者就可以不向內(nèi)存緩沖區(qū)圖片文件夾大量數(shù)據(jù),最終達(dá)到以至于內(nèi)存堆溢出并覆蓋最初存放于堆棧中的函數(shù)返回地址。這樣,函數(shù)的返回地址就被防御者換成了他委托的數(shù)值;若是調(diào)用函數(shù)完畢后,變會(huì)一直不能執(zhí)行“函數(shù)回地址”處的代碼。縱然這等,C的某些其它數(shù)據(jù)結(jié)構(gòu),例如v-table、同樣事件處理程序、函數(shù)指針等,也可能被的的的攻擊。
c語言浮點(diǎn)數(shù)溢出怎么辦?
流出應(yīng)該是超出了機(jī)器數(shù)所能來表示的數(shù)據(jù)范圍,浮點(diǎn)數(shù)的范圍是由階碼做出決定的。
當(dāng)運(yùn)算階碼大于大的階碼時(shí),屬逸出;當(dāng)運(yùn)算階碼大于最大時(shí)負(fù)階碼時(shí),計(jì)算機(jī)按0處理。浮點(diǎn)運(yùn)算是實(shí)數(shù)除法運(yùn)算,是因?yàn)橛?jì)算機(jī)不能存儲(chǔ)整數(shù),所以才實(shí)數(shù)是約數(shù),這樣浮點(diǎn)計(jì)算是很慢的不過會(huì)有誤差。現(xiàn)在大多數(shù)機(jī)器大都32位的,也就是說64位都用來來表示整數(shù)的話,這樣對此無符號(hào)整數(shù)就是0到2^32-1,這對有符號(hào)的話就是-2^31到2^31-1。
本站部分文章來自網(wǎng)絡(luò)或用戶投稿。涉及到的言論觀點(diǎn)不代表本站立場。閱讀前請查看【免責(zé)聲明】發(fā)布者:方應(yīng),如若本篇文章侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。本文鏈接:http://www.gdyuanyu.cn/tougao/68085.html