Цілочисельне переповнення: відмінності між версіями

[неперевірена версія][перевірена версія]
Вилучено вміст Додано вміст
Albedo (обговорення | внесок)
оформлення
м MonX94 перейменував сторінку з Програмне переповнення на Цілочисельне переповнення: Помилка в назві: Правильніший переклад та опис терміну
 
(Не показані 16 проміжних версій 12 користувачів)
Рядок 1:
<noinclude>{{Поліпшити|14 квітня 2022}}</noinclude>
'''Перепо́вненняЦілочисельне перепо́внення''' ({{Lang-en|integer overflow}}) — стан, при якому обробка [[програма|програми]] стає невизначеною внаслідок того, що значення [[операнд]]а перебільшило [[ємність пам’ятіпам'яті]], виділену для нього. При [[програмування|програмуванні]] [[Обчислювальна система|обчислювальних систем]], кожному [[Числа|числу]], [[Змінна|змінній]] ([[операнд]]у) виділяться певна порція [[МашиннаОперативна пам´'ять|машинноїоперативної пам´'яті]] ([[Комірка пам’ятіпам'яті|комірок пам'яті]]), залежно від оголошеного [[Типи даних|типу]], що може задаватись явно або неявно. [[Типи даних|Тип даних]] визначає спосіб відображення (зберігання) даних у машинній пам"'яті та, відповідно, обсяг пам'яті, що виділяється на [[Збереження даних|зберігання даних]]. При переповненні число ([[операнд]]) стає більшим за оголошений тип і це спричинює помилку (''fault'') та порушення ходу програми — некоректне завершення програми (''abnormal program termination''). П.Переповнення може відбутися, зокрема, внаслідок [[ділення на нуль]].
 
=== Боротьба з переповненням= ==
 
Одним іззі способів уникнення п. є реалізація у [[Програмний код|програмному коді]] алгоритівалгоритмів опрацювання переповнень (перевірка та усунення умов, що спричиняють переповнення), а також — [[Приведення типів|приведення]] [[Типи даних|типів даних]] до даних з більшою точністю. Останнє залежить від підтримки [[Мова програмування|мовою програмування]] режимів [[перетворення даних]] (напр. [[Мова програмування C|мова Сі]].)
 
== Див. також ==
[[Категорія:Програмування]]
* [[Переповнення буферу]]
 
== Література ==
* {{Cite book |last=Pierce |first=Benjamin C. |author-link=Benjamin C. Pierce |title=Types and Programming Languages |publisher=MIT Press |year=2002 |isbn=0-262-16209-1 |url=http://www.cis.upenn.edu/~bcpierce/tapl/}}
* {{Cite journal |last1=Wright |first1=Andrew K. |last2=Felleisen |first2=Matthias |author2-link=Matthias Felleisen |year=1994 |title=A Syntactic Approach to Type Soundness |journal=Information and Computation |volume=115 |issue=1 |pages=38–94 |url=http://citeseer.ist.psu.edu/wright92syntactic.html |doi=10.1006/inco.1994.1093 |doi-access=free}}
* {{Cite journal |last=Macrakis |first=Stavros |date=April 1982 |title=Safety and power |journal=ACM SIGSOFT Software Engineering Notes |volume=7 |issue=2 |pages=25–26 |doi=10.1145/1005937.1005941 |s2cid=10426644}}
 
== Посилання ==
* [http://www.phrack.org/issues.html?issue=60&id=10#article Phrack #60, Basic Integer Overflows]
* [http://www.phrack.org/issues.html?issue=60&id=9#article Phrack #60, Big Loop Integer Protection]
* [https://web.archive.org/web/20121010025025/http://www.cs.cmu.edu/~dbrumley/pubs/integer-ndss-07.pdf Efficient and Accurate Detection of Integer-based Attacks]
* [http://projects.webappsec.org/Integer-Overflows WASC Threat Classification — Integer Overflows]
* [http://www.cs.utah.edu/~regehr/papers/tosem15.pdf Understanding Integer Overflow in C/C++]
* [https://www.allaboutcircuits.com/textbook/digital/chpt-2/binary-overflow/ Binary Overflow — Binary Arithmetic]
* [https://webstore.ansi.org/RecordDetail.aspx?sku=ISO%2FIEC%209899:2011 ISO C11 Standard]
 
{{Мало джерел|дата=червень 2023}}
{{Compu-stub}}
 
[[Категорія:Помилки програмування]]
[[Категорія:Комп'ютерна арифметика]]