
數(shù)據(jù)溢出

在計算機(jī)中,當(dāng)要表示的數(shù)據(jù)超出計算機(jī)使用的數(shù)據(jù)范圍時,就會發(fā)生數(shù)據(jù)溢出。
溢出原因
如果數(shù)據(jù)類型超過計算機(jī)字長的限制,將發(fā)生數(shù)據(jù)溢出。內(nèi)存溢出的原因有很多,例如:
(1)使用非類型安全語言(如C/C)。
(2)以不可靠的方式訪問或復(fù)制內(nèi)存緩沖區(qū)。
(3)編譯器設(shè)置的內(nèi)存緩沖區(qū)太接近密鑰數(shù)據(jù)結(jié)構(gòu)。
因子分析
1。內(nèi)存溢出是C語言或C語言固有的缺陷,它不能檢查數(shù)組邊界和類型安全。眾所周知,C/C語言開發(fā)的目標(biāo)代碼非常接近機(jī)器內(nèi)核,因此可以直接訪問內(nèi)存和寄存器。這一特性極大地提高了C/C語言代碼的性能。只要編碼合理,C/C應(yīng)用程序的執(zhí)行效率將優(yōu)于其他高級語言。然而,C/C語言導(dǎo)致內(nèi)存溢出的可能性要高得多。其他語言也有內(nèi)存溢出的問題,但這不是程序員的錯,而是應(yīng)用程序的運行時環(huán)境。
2.當(dāng)應(yīng)用程序讀取用戶(或惡意攻擊者)的數(shù)據(jù)并試圖將其復(fù)制到應(yīng)用程序打開的內(nèi)存緩沖區(qū)中,但無法保證緩沖區(qū)空間時(換句話說,假設(shè)代碼應(yīng)用了一個n字節(jié)的內(nèi)存緩沖區(qū),然后將多個n字節(jié)的數(shù)據(jù)復(fù)制到該緩沖區(qū)中)。內(nèi)存緩沖區(qū)可能溢出。好好想想。如果你把16盎司的水倒進(jìn)一個12盎司的杯子里,那么多出來的4盎司水呢?當(dāng)然,它會充滿了玻璃
!3.最重要的是,C/C編譯器打開的內(nèi)存緩沖區(qū)通常與重要的數(shù)據(jù)結(jié)構(gòu)相鄰。假設(shè)函數(shù)堆棧緊跟在內(nèi)存緩沖區(qū)之后,則存儲函數(shù)的返回地址將與內(nèi)存緩沖區(qū)相鄰。此時,惡意攻擊者可以將大量數(shù)據(jù)復(fù)制到內(nèi)存緩沖區(qū),使內(nèi)存緩沖區(qū)溢出并覆蓋原來存儲在堆棧中的函數(shù)的返回地址。這樣,函數(shù)的返回地址就會被攻擊者指定的值替換;一旦調(diào)用函數(shù),“函數(shù)返回地址”處的代碼就會繼續(xù)執(zhí)行。不僅如此,C的其他一些數(shù)據(jù)結(jié)構(gòu),如v-table、異常處理程序、函數(shù)指針等,也可能受到類似的攻擊。
數(shù)據(jù)溢出是什么意思?1.字節(jié)類型。它可以保存介于“0”和“255”之間的值。
2.短號碼類型。它可以保存“-32768”和“32767”之間的值,大小為2字節(jié)。
3.整數(shù)類型。它可以保存“-2147483648”和“2147483648”之間的值,大小為4字節(jié)。
4.長整數(shù)類型。它可以保存“-9.223.372.036.854.775.808”和“9.223.372.036.854.775.808”之間的值,大小為8字節(jié)。
5.十進(jìn)制類型。它可以保存3.4e/-38(7位小數(shù))之間的值,大小為4字節(jié)。
6.雙精度十進(jìn)制類型。它可以保存1.7e/-308(15位小數(shù)位)之間的值,大小為8字節(jié)。
7.邏輯類型。值可以是true或false,大小為兩個字節(jié)。“True和false是預(yù)定義的常量,它們對應(yīng)的英語常量是True和false。8日期時間類型。用于記錄日期和時間。大小為8字節(jié)。
9.文本類型。它用來記錄一段文字。文本由一系列以字節(jié)0結(jié)尾的字符組成。
10.字節(jié)集。用于記錄一段字節(jié)數(shù)據(jù)。字節(jié)集和字節(jié)數(shù)組可以相互轉(zhuǎn)換。在程序中允許字節(jié)數(shù)組的地方也可以使用字節(jié)集。或者相反,字節(jié)數(shù)組的用法,如用括號引用字節(jié)成員,用數(shù)組類型的數(shù)值數(shù)據(jù)賦值等,都可以由字節(jié)集來使用。兩者之間的唯一區(qū)別是字節(jié)集可以加長,因此可以將字節(jié)集視為自己的可變長度數(shù)組。
11.子程序指針。用于指向大小為4字節(jié)的子例程。在上述基本數(shù)據(jù)類型中,字節(jié)型、短整數(shù)型、整數(shù)型、十進(jìn)制型、雙精度十進(jìn)制型稱為“數(shù)字型”,可以任意轉(zhuǎn)換。然而,編程時需要注意轉(zhuǎn)換可能造成的精度損失。例如,將整數(shù)257轉(zhuǎn)換為字節(jié)的結(jié)果是1,因為值257超出了255字節(jié)數(shù)據(jù)的大限制,從而導(dǎo)致溢出。查看變量可以使用的數(shù)據(jù)類型,然后雙擊定義的變量中的類型以查看所有支持的數(shù)據(jù)類型。
本文名稱:什么叫數(shù)據(jù)溢出plc數(shù)據(jù)溢出輸出不變什么意思?-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://www.chinadenli.net/article40/dcssho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、域名注冊、外貿(mào)建站、網(wǎng)站制作、App設(shè)計、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容