Цілочисельне переповнення
Ця стаття потребує істотної переробки.(14 квітня 2022) |
Цілочисельне перепо́внення (англ. integer overflow) — стан, при якому обробка програми стає невизначеною внаслідок того, що значення операнда перебільшило ємність пам'яті, виділену для нього. При програмуванні обчислювальних систем, кожному числу, змінній (операнду) виділяться певна порція оперативної пам'яті (комірок пам'яті), залежно від оголошеного типу, що може задаватись явно або неявно. Тип даних визначає спосіб відображення (зберігання) даних у машинній пам'яті та, відповідно, обсяг пам'яті, що виділяється на зберігання даних. При переповненні число (операнд) стає більшим за оголошений тип і це спричинює помилку (fault) та порушення ходу програми — некоректне завершення програми (abnormal program termination). Переповнення може відбутися, зокрема, внаслідок ділення на нуль.
Одним зі способів уникнення п. є реалізація у програмному коді алгоритмів опрацювання переповнень (перевірка та усунення умов, що спричиняють переповнення), а також — приведення типів даних до даних з більшою точністю. Останнє залежить від підтримки мовою програмування режимів перетворення даних (напр. мова Сі.)
- Pierce, Benjamin C. (2002). Types and Programming Languages. MIT Press. ISBN 0-262-16209-1.
- Wright, Andrew K.; Felleisen, Matthias (1994). A Syntactic Approach to Type Soundness. Information and Computation. 115 (1): 38—94. doi:10.1006/inco.1994.1093.
- Macrakis, Stavros (April 1982). Safety and power. ACM SIGSOFT Software Engineering Notes. 7 (2): 25—26. doi:10.1145/1005937.1005941. S2CID 10426644.
- Phrack #60, Basic Integer Overflows
- Phrack #60, Big Loop Integer Protection
- Efficient and Accurate Detection of Integer-based Attacks
- WASC Threat Classification — Integer Overflows
- Understanding Integer Overflow in C/C++
- Binary Overflow — Binary Arithmetic
- ISO C11 Standard
Це незавершена стаття про інформаційні технології. Ви можете допомогти проєкту, виправивши або дописавши її. |