📒 Վարժություն 12
Ի՞նչ կլինի, եթե օգտագործողի ներմուծած տողը լինի ավելի երկար, քան զանգվածի չափը։ Փորձե՛ք աշխատեցնել ներքևում գրված ծրագիրը և ներմուծել տարբեր երկարության տողեր։
Կտեսնենք, որ որոշ դեպքերում էկրանին կտպվի
4
սիմվոլից ավել պարունակող տող, որոշ դեպքերում ծրագիրը վթարային կավարտվի` ասելով որ դիմում է կատարվել ոչ վավեր հիշողության հասցեի։ ![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fc897e24a-3d47-4d74-8598-286d567c953c%2FUntitled.png?table=block&id=4b51c379-628e-490a-b360-139936c191fa&cache=v2)
Այսպիսի իրավիճակները, երբ կատարվում են դիմումներ զանգվածի սահմանված չափերից դուրս, հայտնի են բուֆերի գերհագեցում (buffer overflow) անունով։ Այսպիսի սխալները կարող են հանգեցնել ծրագրի վթարային ավարտի կամ ծրագրի ոչ դետերմինիստիկ աշխատանքի ( նույն մուտքային արժեքների դեպքում, ծրագիրը կարող է վերադարձնել տարբեր արդյունքներ)։ Բուֆերի գերհագեցման սխալների պատճառով, ծրագրերը նաև կարող են հեշտությամբ ենթարկվել հակերային հարձակումների։
Զանգվածների հետ աշխատելիս պետք է լինել առավել ուշադիր և բացառել բուֆերի գերհագեցման սխալները։
#include <iostream>
int main() {
const int MAX_SIZE = 5;
char input[MAX_SIZE];
std::cin.getline(input, 100);
std::cout << input << std::endl;
}