2015-12-08 30 views
0

我有自定義數據類型的二維數組,這樣說動態分配的數組元素內存

struct element_t ** arr 

我如何分配這個數組的單個元素空間(ARR [i] [j])使用malloc()?提前致謝。

回答

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每個數組的大小的大小;

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?