我在C中初始化一个动态二维结构体,像这样:
typedef struct
{
int v;
unsigned int t;
} cb;
cb **b;
b = malloc( sizeof(*b) * s + (s * (e * sizeof(**b) )));
s和e是数组的维度(行和列的大小)
我如何也初始化b与v设置为0?
永远不要为了动态分配2D数组而使用指针对指针查找表。这是一种普遍但不良和不正确的做法,导致分割和缓慢的程序。
相反,使用数组指针并在相邻内存中分配一个真正的2D数组:
cb (*arr)[y] = malloc( sizeof(cb[x][y]) );
arr[i][j] = something;
free(arr);
要将所有内容初始化为0,使用calloc而不是malloc。要将所有元素初始化为给定值,必须使用循环并逐个赋值。
用calloc
代替malloc
。