MMU - MPU на вас нету. сохраняются данные туда же куда и при int[10] Data; Data[11] = 10;
то есть в память с адресом &Data[0] + 11*4, а что там лежит одному вам известно. Так можно спокойно загадить данные, другие переменные, даже если очень постараться можно код программы завалить.
Дальше больше если выбрать ячейку вне пределов вашей памяти, она свернеться и попадет куда-то в адрес который у вас есть.
Вообще это базовые понятия программирования, винды тут нет которая напишет приложение выполнила недопустимую ошибку и будет закрыто, или как она там писала?
Локальные массивы выделяются на стеке, стек кончиться начнут гадить оперативку. Глобальные массивы выделены сразу в оперативке, менять их размеры на лету не выйдет. Массивы динамические создаются на куче, со всеми делами по организации, дефрагментации и прочей байде с кучей. Потому вместо одноразового массива выделяемого на стеке придумать одноразовый массив в куче - это мучение кучи, созданием и удалением массивов, ее фрагментации и так далее...
хорошим тоном в вашем случае является проверка data на допустимые значения
а вторым хорошим тоном является создавать массив всегда одной величины с запасиком, и проверкой влезет ли дата в него или нет. А то так далеко можно уйти, в непредсказуемые дали...
|