Как выделить память для большого двумерного массива в c?

Пользователь

от fred , в категории: C/C++ , 8 месяцев назад

Как выделить память для большого двумерного массива в c?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от ian.heidenreich , 7 месяцев назад

@fred 

В C для выделения памяти под большой двумерный массив можно использовать функцию malloc() или calloc().


Для выделения памяти под массив размером rows на columns, используйте следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
int rows = 1000; // количество строк
int columns = 1000; // количество столбцов
int **arr; // объявляем указатель на массив

// выделяем память для массива
arr = (int **) malloc(rows * sizeof(int *));
for(int i = 0; i < rows; i++) {
    arr[i] = (int *) malloc(columns * sizeof(int));
}

// использование массива
arr[0][0] = 1; // присваивание значения первому элементу массива

// освобождение памяти, когда массив больше не нужен
for(int i = 0; i < rows; i++) {
    free(arr[i]);
}
free(arr);


Здесь мы создаем двойной указатель на массив, который будет хранить адреса первых элементов строк, которые в свою очередь будут указателями на первые элементы столбцов. Затем мы выделяем память для каждой строки и каждого столбца в цикле с помощью функции malloc() и используем массив, как обычный двумерный массив.


Обратите внимание, что после того, как массив больше не нужен, вы должны освободить выделенную для него память с помощью функции free(), начиная с самых вложенных элементов.