我正在C中初始化动态二维结构,如下所示:
typedef struct
{
int v;
unsigned int t;
} cb;
cb **b;
b = malloc( sizeof(*b) * s + (s * (e * sizeof(**b) )));
s和e是数组的维度(行和列大小)
如何在v设置为0的情况下初始化b?
答案 0 :(得分:2)
永远不要使用指针到指针查找表来动态分配2D数组。这种做法很普遍但很糟糕且不正确,导致细分和程序缓慢。
相反,使用数组指针并在相邻的内存中分配一个真正的2D数组:
cb (*arr)[y] = malloc( sizeof(cb[x][y]) );
arr[i][j] = something;
free(arr);
要将所有内容初始化为零,请使用calloc而不是malloc。要将所有内容初始化为给定值,您必须使用循环并逐个分配值。
答案 1 :(得分:1)
使用calloc
代替malloc
。