@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()
, начиная с самых вложенных элементов.