@nishe

Правильно ли я понимаю работу программы?

Я написал код, который создает в памяти массивы указателей на указатели через каждые введенные четыре числа.
Эти четыре числа получаются записываются в четыре позиции или как? Написать написал, а вот до конца смысла программы не понял.
Смысл в том, что я создал расширяющийся на строки массив, у которого четыре столбца по условию и записываю туда числа.

#include <stdio.h> 
#include <locale.h>
#include <iostream>
#include <string>




int main()
{
    setlocale(LC_ALL, "RUS");
    int** A = NULL;
    int number;
    int count = 0;
    while (true)
    {
        A = (int**)realloc(A, ++count * sizeof(int*));

        for (int i = count-1; i < count; i++)
        {
            A[i] = (int*)malloc(4 * sizeof(int));
        }

      
        for (int j = 0; j < 4; j++)
        {
            printf("Введите число ");
            std::cin >> number;
            A[count-1][j] = number;
        }
        
        printf("Введенная вами массив равен \n");
        for (int i = 0; i < count;i++)
        {
            for (int j = 0; j < 4; j++)
            {
                printf("%d ", A[i][j]);
            }
            printf("\n");
        }


    }
    return 0;
}

Пример входных данных:
Введите число : 1
Введите число : 2
Введите число : 3
Введите число : 4

Выходные данные:
1 2 3 4
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
Правильно понимаете.

Цикл for (int i = count-1; i < count; i++) всегда из одной итерации, так что смысла в нем нет. Оставьте просто одно выделение памяти для последнего элемента массива А (сам цикл уберите).
В конце вы не освобождаете память - это утечка. В реальных проектах подобное поведение плохо заканчивается.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы