Что означает переполнение памяти - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Пожалуйста нужно сделать задание на С. Исследование алгоритма выделения памяти в C Никак не могу понять что означает переполнение памяти (если можно киньте статейку, сам так и не нагуглил) Программа №1: Создать 2 массива A и B из элементов типа char по 10 элементов Заполнить массив A и массив B нулями Заполнить массив A c переполнением 20-тью элементами 1,2,3,4 .. 20 Вывести на экран через пробел по 10 элементов массива А и В в виде Массив A: 1 2 3 4 5 6 7 8 9 10 Массив B: 0 0 0 0 0 0 0 0 0 0 У меня получился следующий код
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
 
int main()
{
    char a[SIZE], b[SIZE];
    char i;
 
    for (i=0; i<SIZE; i++)
    {
    a[i]=b[i]=0;
    }
 
    for (i=1; i<20; i++)
    {
    a[i]=i;
    }
 
    printf("A: ");
    for (i=1; i<SIZE; i++)
    {
       printf("%i ",a[i]);
    }
    printf("\n B: ");
    for (i=1; i<SIZE; i++)
    {
       printf("%i ",b[i]);
    }
    return 0;
}
Правильно? Программа №2: Создать 2 массива A и B из элементов типа char по 10 элементов Заполнить массив A и массив B нулями Заполнить массив B c переполнением 20-тью элементами 1,2,3,4 .. 20 Вывести на экран через пробел по 10 элементов массива А и В Логически
 a[i]=i;
поменять на
 b[i]=i;
но мне кажется что, что-то здесь не так. Ведь должно наверно вывести в итоге Массив B: 1 2 3 4 5 6 7 8 9 10 Массив A: 0 0 0 0 0 0 0 0 0 0 или нужно вводить по 1 переменной для каждого массива? Программа №3: Создать 2 массива A и B из элементов типа char по 10 элементов Заполнить массив A и массив B нулями Заполнить массив A c переполнением 2000 элементами 1,2,3,4 .. 255,0,1 2.. Вывести на экран через пробел по 10 элементов массива А и В Я так думаю что она ничем не отличается от первой, единственное что нужно поменять это 20 на 2000, понятно, что выдаст ошибку, т.к. число для этого типа слишком большое Сильно не пинайте, только начал изучать.

Решение задачи: «Что означает переполнение памяти»

textual
Листинг программы
#include <stdio.h>
#define SIZE 10
 
int main(void){
    char A[SIZE], B[SIZE];
    int i;
    
    for ( i = 0; i < 2 * SIZE; ++i )
        A[i] = i + 1;
    
    printf("\nA: ");
    for ( i = 0; i < SIZE; ++i )
        printf("%d ", A[i]);
    printf("\nB: ");
    for ( i = 0; i < SIZE; ++i )
        printf("%d ", B[i]);
    printf("\n");
    return 0;
}

Объяснение кода листинга программы

  1. Подключение стандартной библиотеки.
  2. Определение константы SIZE, которая равна 10.
  3. Объявление двух массивов A и B типа char, каждый из которых может хранить SIZE символов.
  4. Объявление переменной i типа int, которая будет использоваться в циклах.
  5. Заполнение массива A значениями от 1 до 2*SIZE с помощью цикла for.
  6. Вывод содержимого массива A на экран с помощью цикла for и функции printf.
  7. Вывод содержимого массива B на экран с помощью цикла for и функции printf.
  8. Завершение работы программы с помощью оператора return.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5