使用指针创建动态数组

Creating a dynamic array of arrays using pointers

我正在尝试创建一个动态数组。因此,例如,让我们看一下帕斯卡的三角形:

1
11
121
1331
14641
...
...

这基本上是一个长度为 N 的数组,在每个索引处都有一个长度为 i+1.

的数组

我们究竟如何设置它?

我尝试了一些使用指针的方法。

我设置了一个这样的指针数组:

int *arr[N];

然后我需要一个指针i指向i+1的数组,所以我做了:

int *i = 0;
    for(int j = 0; j < N; j++){
        int numArr[j+1];
        arr[*i] = numArr;
        *i++;
    }

我的方向是否正确?因为我相信我应该为此分配内存,因为我以后必须使用 free()。我会为每个数组初始化使用 malloc() 吗?

代码可以变得非常简单,如果你知道你在做什么:

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

当然,您需要进一步调用 free(),如下所示:

for (i = 0; i < N; ++i) {
    free(arr[i]);
}
free(arr);