如何在C中为多维数组动态分配内存? [重复]

问题描述 投票:0回答:2

为指定行数和列数的多维数组(矩阵)动态分配内存。 如何分配内存? 如何为二维数组分配内存? 如何动态分配内存? 我尝试使用循环为数组的每一行分配内存。 我尝试使用另一个循环为数组的每一列分配内存。 我希望程序能够成功地为多维数组分配内存。 我希望程序能够正确打印数组维度(行数和列数)。 我希望程序使用 free() 释放内存而不会出现任何内存泄漏

arrays c multidimensional-array dynamic-memory-allocation
2个回答
0
投票

首先,您应该分配代表二维数组的双指针:

char **arr = malloc(NUMBER_OF_ELEMENTS);

第二,你应该在这个二维数组中分配每个数组

for ( i = 0; i < NUMBER_OF_ELEMENTS; i++)
{
    arr[i] = malloc(array_size);
}

0
投票

这行得通吗?

#include <stdio.h>
#include <stdlib.h>

int main() {
  int n = 3;
  int m = 4;
  // Allocate memory for the row pointers
  int** matrix = (int**) malloc(n * sizeof(int*));
  // Allocate memory for each row
  for (int i = 0; i < n; i++) matrix[i] = (int*) malloc(m * sizeof(int));

  // test
  matrix[2][2] = 3;
  printf("%d ", matrix[2][2]);
}
© www.soinside.com 2019 - 2024. All rights reserved.