【发布时间】:2021-02-03 20:48:51
【问题描述】:
我在编译时使用-std=gnu99。假设我有一个这样的结构:
typedef struct Foo {
char *quux;
int baz;
} Foo;
我注意到您可以像这样在堆中使用 NULL 值初始化一维结构数组:
Foo* bar[10] = {[0 ... 9] = NULL};
但是对于堆上的二维数组,我该如何做呢?这是我的尝试:
int depth = 10;
int length = 10;
Foo **bar;
bar = malloc(sizeof(Foo) * length);
for (int i = 0; i < length; i++) {
bar[i] = (Foo*) calloc(depth, sizeof(Foo));
}
而当我去释放这段记忆时,我会free() 10 次,还是100 次?那么 foo.quux 的可变长度呢?
【问题讨论】:
标签: c memory-management malloc