为阵列元素动态分配内存

时间:2015-12-08 10:48:19

标签: c arrays struct

我有一个自定义数据类型的二维数组,比如

struct element_t ** arr

如何使用malloc()为此数组的单个元素(arr [i] [j])分配空间?提前谢谢。

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

struct element_t **arr;

arr = malloc(N * sizeof(*arr));
for (int i = 0; i < N; ++i) {
    arr[i] = malloc(X * sizeof(*arr[i]));
}

其中N是双数组的大小,X是每个数组的大小;

答案 1 :(得分:0)

这取决于您希望如何分配内存。如果你想要一块连续的内存,那么

arr = malloc(nrows * sizeof(*arr));
arr[0] = malloc(nrows * ncolumns * sizeof(struct element_t));
for(int i = 1; i < nrows; i++)
    arr[i] = arr[0] + i * ncolumns;  

对于非连续的

arr = malloc(nrows * sizeof(*arr));
for(int i = 0; i < nrows; i++)
    arr[i] = malloc(ncolumns * sizeof(struct element_t));  

有关详细说明,请阅读How can I dynamically allocate a multidimensional array?