📒 Վարժություն 12

Ի՞նչ կլինի, եթե օգտագործողի ներմուծած տողը լինի ավելի երկար, քան զանգվածի չափը։ Փորձե՛ք աշխատեցնել ներքևում գրված ծրագիրը և ներմուծել տարբեր երկարության տողեր։
Կտեսնենք, որ որոշ դեպքերում էկրանին կտպվի 4 սիմվոլից ավել պարունակող տող, որոշ դեպքերում ծրագիրը վթարային կավարտվի` ասելով որ դիմում է կատարվել ոչ վավեր հիշողության հասցեի։
notion image
Այսպիսի իրավիճակները, երբ կատարվում են դիմումներ զանգվածի սահմանված չափերից դուրս, հայտնի են բուֆերի գերհագեցում (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;
}
 
To check your solution you need to sign in
Sign in to continue